WM_DESTROY

WM_DESTROY 是關閉程式的
WM_CLOSE 是關閉視窗的
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,退出程式

相關詞條

熱門詞條

聯絡我們