MFC對話框 OnClose() 和 OnDestroy() 調用區別

 OnClose():消息響應函數,響應WM_CLOSE消息,當"關閉"按鈕被單擊的時候(而不是我們眼睛所見的對話框從屏幕上消失時),該函數被調用,用戶在響應OnOk()或者OnCancel()函數之後,不會發送WM_CLOSE消息OnDestroy():消息響應函數,響應WM_DESTROY消息,當一個窗口即將被銷燬時,被髮送在單視圖程序中,根據<<深入淺出MFC>>所講,程序退出時執行的操作順序爲:

(1)用戶點擊退出按鈕,發送了WM_CLOSE消息
(2)在WM_CLOSE消息的處理函數中,調用DestroyWindow()
(3)在DestroyWindow()中發送了WM_DESTROY消息
(4)在WM_DESTROY消息中調用PostQuitMessage(),發送WM_QUIT消息,結束消息循環

綜上,程序先調用OnClose()(也可能不調用),然後調用OnDestroy()(必調用),所以,如果要進行程序結束時的清理工作,應該在OnDestroy()中,而不是在OnClose(),否則就有可能會出現內存泄漏的危險了!

 

From:  http://www.cppblog.com/qiaodong/archive/2006/12/11/16287.html

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