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

在MFC对话框程序中,主窗口放置一个按钮,点击按钮,弹出另一个对话框,代码如下:

iBeacon基站 升级版 Dialog 14580 近场定位 佰睿大电池 四件包邮
精准定位,超低功耗,CR2477大电池,支持 微信摇一摇 | 月销量0件
优惠价39元
原价¥40

淘口令:

¥lN9UXBgpjdx¥
 

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
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发
CPPKU的头像-cppku-C++库

昵称

取消
昵称表情代码图片