基於對話框的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裏面。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiangsok/archive/2009/07/22/4369094.aspx