最新消息:

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

零散记录 CPPKU 24浏览 0评论

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

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类型变量

转载请注明:cppku-C++库 » MFC对话框程序中,弹出子对话框报错的问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址