本帖最后由 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;
- }
复制代码
|
谢谢,记录一下学习内容,分享出来以供大家批评指正