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();

  这样就搞定了,不过感觉有点麻烦啊,呵呵!

posted @ 2011-11-21 16:59  hailong  阅读(6570)  评论(0编辑  收藏  举报