mantishell 发表于 2016-7-6 12:03:15

VS2012类的构造函数传参

本帖最后由 mantishell 于 2016-7-12 08:25 编辑

在使用mfc的单文档的菜单弹出的对话框时,有时候需要记录些信息,在编辑框内输入数据,点击确定后又变回了0,这时候怎么办呢?

例子:
一、建立工程名字叫Doc
在菜单栏里添加子菜单ID_VIEW_UPDATETIMER,并在CDocView类里添加OnViewUpdatetimer方法。
在DocView.h里添加
#define VIEW_DEFAULT_INTERVAL                250
#define VIEW_MIN_INTERVAL                        10
#define VIEW_MAX_INTERVAL                        30000

WORD m_wUpdateInterval;


DocView.cpp
1.在CDocView构造函数里添加初始话

CDocView::CDocView()
{
      // TODO: 在此处添加构造代码
      m_wUpdateInterval = VIEW_DEFAULT_INTERVAL;
}2、添加ID_VIEW_UPDATETIMER命令消息

void CDocView::OnViewUpdatetimer()
{
    // TODO: 在此添加命令处理程序代码
    CUpdateIntervalDlg dlg(m_wUpdateInterval);//传参,前一次打开对话框输入的数值
    if (dlg.DoModal () == IDOK)
    {
      if (m_wUpdateInterval != (WORD) dlg.m_nInterval)
      {
            KillTimer (UPDATE_ITEMPANE_EVENT);
            m_wUpdateInterval = (WORD) dlg.m_nInterval;//对话框上输入的数值
            SetTimer (UPDATE_ITEMPANE_EVENT, m_wUpdateInterval, NULL);
            }
      }
}


UpdateIntervalDlg.cpp
3、关联IDC_INTERVAL变量int m_nInterval;重新构造函数

CUpdateIntervalDlg::CUpdateIntervalDlg (WORD wInterval, CWnd *pParent /*=NULL*/)
      : CDialogEx (CUpdateIntervalDlg::IDD, pParent)
{
      m_nInterval = wInterval;

      if (m_nInterval < VIEW_MIN_INTERVAL)
                m_nInterval = VIEW_MIN_INTERVAL;
      else if (m_nInterval > VIEW_MAX_INTERVAL)
                m_nInterval = VIEW_MAX_INTERVAL;

}


stary666 发表于 2016-7-6 12:57:07

:loveliness::loveliness:

mantishell 发表于 2016-7-12 08:29:06

stary666 发表于 2016-7-6 12:57


谢谢,记录一下学习内容,分享出来以供大家批评指正

stary666 发表于 2016-7-12 13:55:06

:loveliness::loveliness:
页: [1]
查看完整版本: VS2012类的构造函数传参