关于MFC对话框右上角的关闭窗口按钮

流言终结者 2017-04-21 09:56:26
想知道可以编辑吗,每次一关就奔溃,因为我还打开了其他窗口,关之前要先destroy窗口。但不知道写在哪。
...全文
795 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
elton-wang 2019-01-28
  • 打赏
  • 举报
回复
每次看赵老师的回答大部分都是废话,难受!
lim466161 2018-12-21
  • 打赏
  • 举报
回复
只需要在对话框类向导中找到OnSysCommand消息函数,然后再此函数中添加以下代码即可: if (nID==SC_CLOSE) CDialog::OnCancel(); 完美解决!
流言终结者 2017-04-22
  • 打赏
  • 举报
回复
终于解决,destroyAllWindows();写在Onclose()没效果,我看网上说调Onclose()里还会调OnDestroy(),所以我把destroyAllWindows()写在OnDestroy()里就搞定了。因为没学过C++的原因,对类什么的不熟,除了添加这个函数外还要在几个地方加东西。
流言终结者 2017-04-22
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] 或者在OnClose里面直接exit(0);
http://bbs.csdn.net/topics/390787357[/quote] OnClose()为不允许使用继承成员
流言终结者 2017-04-22
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow
但好像只 Destroy了当前的窗口,我还有其他窗口开着,会奔溃。我想写一个 Destroyall,不知道放哪里
赵4老师 2017-04-21
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
或者在OnClose里面直接exit(0);
http://bbs.csdn.net/topics/390787357
zgl7903 2017-04-21
  • 打赏
  • 举报
回复
重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow
赵4老师 2017-04-21
  • 打赏
  • 举报
回复
或者在OnClose里面直接exit(0);
赵4老师 2017-04-21
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
流言终结者 2017-04-21
  • 打赏
  • 举报
回复
有设置了一个退出按钮,把destroyWindow(); 写里面,可用。但还是习惯会直接点右上角的X
qq_33833904 2017-04-21
  • 打赏
  • 举报
回复
在onclose里释放资源
kakabulusi 2017-04-21
  • 打赏
  • 举报
回复
楼上的同人回答的差不多可以解决你的问题了。 建议你先了解一下windows的消息机制。 既然你编写了退出按钮事件函数,不妨考虑一下在退出事件函数中进行相同的操作。
shiter 2017-04-21
  • 打赏
  • 举报
回复
DestroyWindow,里面的内容可能要释放一些资源

19,469

社区成员

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

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