MFC对话框程序中,弹出子对话框报错的问题

在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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容