在MFC对话框程序中,主窗口放置一个按钮,点击按钮,弹出另一个对话框,代码如下:
null
CDialog subDlg;
subDlg.m_edit.enableWindow(TRUE);
subDlg.DoModal();
CString str;
subDlg.m_edit.getWindowsTextA(str);
结果,运行时,在第2行、第5行分别报错。
第2行报错 winocc.cpp line 845
第5行报错wincore.cpp line 1185
m_edit是子对话框中的一个编辑框的变量名。
最终原因如下:
在调用DoModal()前,窗体尚未创建界面和其控件;
在调用DoModal()之后,界面资源已经被销毁。
所以不能在DoModal()调用界面控件变量。
解决方案:
在子对话框的类中定义public的非界面控件变量,在此为CString类型变量,在对话框的OK按钮事件中对CString类型变量进行赋值(从m_edit控件中取值)
然后在主对话框中访问该CString类型变量
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容