VC++中遇到的问题,急救

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:47:11
我编了一个很简单的程序,就是建立了一个MFC.EXE多文档应用程序,加了一个对话框,我想从对话框里面输入数据,并保存到视图类中的成员变量里面.但是编辑框关联的变量赋值给成员变量以后,成员变量始终还是0.我把里面的代码列在下面,请高手帮忙看看是哪里的错:
void CMy111View::Onhaha()
{

C11dlg dlg;
CString ss;
if(dlg.DoModal()==IDOK)
{
Changdu=dlg.m_111;

}
ss.Format("Changdu=%lf",Changdu);
AfxMessageBox(ss);
}
dlg.m_111是我给对话框里的编辑框关联的变量,Changdu是我定义在视图类中的成员变量.我希望在点了对话框的OK按钮以后,能将dlg.m_111的值赋给Changdu.但我发现不管怎么样Changdu都是0.到底是哪里出问题了.
我在Changdu=dlg.m_111;
设置了断点,发现dlg.m_111的值已经保存了从对话框里输入的值.
我就是不明白,我没有用UpdateData();为什么关联的变量dlg.m_111还能从编辑框中得到值.
另外Onhaha() 是给菜单项haha增加得命令函数,我并没有在定义了dlg对象后,直接dlg.DoModal();弹出对话框.而是dlg.DoModal()==IDOK;
是不是用了dlg.DoModal()==IDOK后就不用使用dlg.DoModal()和UpdateData()

在对话框的OnOK()函数里面加上UpdateData(true)试试

DoModal()返回后,对话框和它上面的控件已经不存在了,UpdateData()是用来在控件和变量之间传递数据的,控件不存在了,也就不能交换了

另外Changdu=dlg.m_111;
Changdu是什么类型?int吗?如果是的话就不应该用ss.Format("Changdu=%lf",Changdu); 而是
ss.Format("Changdu=%d",Changdu);

有没有用UpdateData()读入数据。
dlg.DoModal()==IDOK 后dlg.DoModel当然不用再调用了,前面那句不是已经执行了吗?
其他我没看明白你是什么意思!

DoModal()返回后他的窗口句柄就没有了
但是dlg这个变量并没有释放
你可以在类向导里把控件类型设置为CString
这样就可以了