MFC模态窗口和非模态窗口的问题

你的OPPA 2016-07-07 10:17:46
我创建了一个项目,主界面的一个按钮事件响应创建一个模态窗口A,窗口A初始化一个Tab控件,并且初始化两个非模态的子窗口B和C(是基于Tab控件的子窗口);然后在窗口C中响应点击事件创建一个模态窗口D,在关闭窗口D后就会出现错误,最终断在主窗口类中的A.DoModal()函数中。

当我把模态窗口A改成非模态显示,在关闭窗口D时,错误断在主窗口的dlg.DoModal()上。
这到底是为什么?
...全文
290 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
你的OPPA 2016-07-11
  • 打赏
  • 举报
回复
终于找到错误了: 在窗口C的类中的PreTranslateMessage()函数中打开了窗口D,但是在关闭D后没有return TRUE; 但是我就不懂了,为什么在该函数中domodal一个窗口,并且关闭后会出现挂线程?并导致这样的错误,求大神指点下···
aeo000000 2016-07-11
  • 打赏
  • 举报
回复
先备份一下。 对话框A D里面不停删除控件,删一个试一下。 如果删到只有ok按钮还出错,那就没办法了,重建工程?
你的OPPA 2016-07-09
  • 打赏
  • 举报
回复
在关闭窗口D后,错误断在主界面调用窗口A的domodal上,这说明在关闭D后窗口A的domodal出了问题,但是具体什么问题就不知道了
Eleven 2016-07-08
  • 打赏
  • 举报
回复
你自己Debug下看看问题出在哪里窗口类中了?
你的OPPA 2016-07-07
  • 打赏
  • 举报
回复
另外,在关闭窗口D时,用的有PostMessage(), OnOK(),OnClose(), 效果都一样。 但是我按Esc键关闭窗口D就不会报错。
zgl7903 2016-07-07
  • 打赏
  • 举报
回复
是不是有什么越界操作 导致堆栈被破坏?
跟随我 2016-07-07
  • 打赏
  • 举报
回复
那关闭的时候,调用OnCancel()这个呗

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧