OnClose()消息和 OnDestroy()消息

基于对话框的MFC程序,发现每次程序退出时,托盘的小图标不能自动消失,鼠标移上去之后才能消失,比较不爽。


后来发现我删除这个图标的代码是在自己重写的OnClose()函数中,结果断点一看,OnClose()根本没有被调用,确切的说是点“退出”不调用,点右上角的“叉”才调用,难怪出现这个结果,后来还有我想在OnClose()函数中有其他操作也没有被调用。


在http://www.qqgb.com/Program/VC/VCJC/Program_250726.html上看到了一个很好的回帖:


1. 点“确定”、“取消”时的关闭路由为 


OnOK()或OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy() 


2. 点“关闭”标题栏按钮的关闭路由为 


OnClose()---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()


所以OnClose()并不是关闭路由的必经路径, OnDestroy() 才是程序关闭的必经路径,因此重写OnDestroy() ,把我需要在程序结束的操作全部放到了这个函数里面,OK了,不过还要记得把ON_WM_DESTROY()加到MESSAGE MAP里面。


猜你喜欢

转载自blog.csdn.net/l198738655/article/details/80017281