WM_DESTROY

視窗銷毀後(調用DestroyWindow()後),訊息佇列得到的訊息。

用戶通過點擊關閉程式按鈕後,訊息佇列增加一條訊息WM_CLOSE,然後程式從訊息佇列中取走WM_CLOSE,調用DestroyWindow(),訊息佇列增加WM_DESTROY,應用程式再次取走,並調用PostQuitMessage(),最終得到WM_QUIT而使訊息循環退出,程式退出。
使用者選按,於是發出 WM_CLOSE。
CMyFrameWnd 並沒有設定WM_CLOSE 處理常式,於是交給預設之處理常式。
預設函式對於WM_CLOSE 的處理方式是呼叫 ::DestroyWindow, 並因而發出WM_DESTROY。
預設之WM_DESTROY 處理方式是呼叫::PostQuitMessage,因此發出WM_QUIT。
CWinApp::Run 收到WM_QUIT 後會結束其內部之訊息迴路, 然後呼叫ExitInstance,這是CWinApp 的一個虛擬函式。
如果CMyWinApp 改寫了ExitInstance , 那么CWinApp::Run 所呼叫的就是CMyWinApp::ExitInstance,否則就是 CWinApp::ExitInstance。
最後回到 AfxWinMain,執行 AfxWinTerm,結束程式。
WM_CLOSE,調用DestroyWindow()
DestroyWindow()又傳送WM_DESTROY
回響WM_DESTROY,調用WM_QUIT
GetMessage()發現WM_QUIT,退出程式

相關詞條

熱門詞條

聯絡我們