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

时间:2022-07-10 23:51:32
想知道可以编辑吗,每次一关就奔溃,因为我还打开了其他窗口,关之前要先destroy窗口。但不知道写在哪。

11 个解决方案

#1


有设置了一个退出按钮,把destroyWindow(); 写里面,可用。但还是习惯会直接点右上角的X

#2


崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处, 看不懂时双击下一行,直到能看懂为止

#3


或者在OnClose里面直接exit(0);

#4


重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow

#5


引用 3 楼 zhao4zhong1 的回复:
或者在OnClose里面直接exit(0);

http://bbs.csdn.net/topics/390787357

#6


DestroyWindow,里面的内容可能要释放一些资源

#7


楼上的同人回答的差不多可以解决你的问题了。
建议你先了解一下windows的消息机制。
既然你编写了退出按钮事件函数,不妨考虑一下在退出事件函数中进行相同的操作。

#8


在onclose里释放资源 

#9


引用 4 楼 zgl7903 的回复:
重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow

但好像只 Destroy了当前的窗口,我还有其他窗口开着,会奔溃。我想写一个 Destroyall,不知道放哪里

#10


引用 5 楼 zhao4zhong1 的回复:
Quote: 引用 3 楼 zhao4zhong1 的回复:

或者在OnClose里面直接exit(0);

http://bbs.csdn.net/topics/390787357

OnClose()为不允许使用继承成员

#11


终于解决,destroyAllWindows();写在Onclose()没效果,我看网上说调Onclose()里还会调OnDestroy(),所以我把destroyAllWindows()写在OnDestroy()里就搞定了。因为没学过C++的原因,对类什么的不熟,除了添加这个函数外还要在几个地方加东西。

#1


有设置了一个退出按钮,把destroyWindow(); 写里面,可用。但还是习惯会直接点右上角的X

#2


崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处, 看不懂时双击下一行,直到能看懂为止

#3


或者在OnClose里面直接exit(0);

#4


重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow

#5


引用 3 楼 zhao4zhong1 的回复:
或者在OnClose里面直接exit(0);

http://bbs.csdn.net/topics/390787357

#6


DestroyWindow,里面的内容可能要释放一些资源

#7


楼上的同人回答的差不多可以解决你的问题了。
建议你先了解一下windows的消息机制。
既然你编写了退出按钮事件函数,不妨考虑一下在退出事件函数中进行相同的操作。

#8


在onclose里释放资源 

#9


引用 4 楼 zgl7903 的回复:
重载 DestroyWindow , 点击那个叉 也会调用到 DestroyWindow

但好像只 Destroy了当前的窗口,我还有其他窗口开着,会奔溃。我想写一个 Destroyall,不知道放哪里

#10


引用 5 楼 zhao4zhong1 的回复:
Quote: 引用 3 楼 zhao4zhong1 的回复:

或者在OnClose里面直接exit(0);

http://bbs.csdn.net/topics/390787357

OnClose()为不允许使用继承成员

#11


终于解决,destroyAllWindows();写在Onclose()没效果,我看网上说调Onclose()里还会调OnDestroy(),所以我把destroyAllWindows()写在OnDestroy()里就搞定了。因为没学过C++的原因,对类什么的不熟,除了添加这个函数外还要在几个地方加东西。