OnClosed 和 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裏面。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiangsok/archive/2009/07/22/4369094.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章