MFC模态对话框传值
如图:
在单文档菜单栏新建一个ADD菜单项
然后对这个ADD创建num_add类,并创建事件,点击出现对话框:
-
void CDocement1Doc::On_ADD() { // TODO: Add your command handler code here num_add dlg1; dlg1.DoModal(); }
输入之后,计算sum,并点击OK键创建事件:
-
void num_add::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); m_sum = m_a + m_b; UpdateData(FALSE); CDialog::OnOK(); }
问题是:一旦我下次再点击ADD的时候,上一次输入的数值都消失了:
而我想看到上次输入的数值,怎么做啊?
解决方法:
在App类里面添加了3个变量和两个函数.
int m_save1; int m_save2; int m_save3; void SaveData(int x,int y,int z) //将编辑框控件值保存 { m_save1 = x; m_save2 = y; m_save3 = z; } void ReadData(int& x,int& y,int& z)//把值赋予编辑框控件 { x = m_save1 ; y = m_save2; z = m_save3; }
然后在响应对话框那里
-
CMyDlg mydlg; theApp.ReadData(mydlg.m_num1,mydlg.m_num2,mydlg.m_num3); mydlg.DoModal(); theApp.SaveData(mydlg.m_num1,mydlg.m_num2,mydlg.m_num3);
等于说是创建对话框对象.
然后把保存过的三个数赋予对话框控件所关联的三个数
然后你操作完以后再保存到那三个变量里去
相加的按钮还是一样的
-
UpdateData(true); m_num3 = m_num1+m_num2; UpdateData();
这样就搞定了,不过感觉有点麻烦啊,呵呵!