Windows API一日一練 15 PostQuitMessage函數
阿新 • • 發佈:2019-02-02
make 調用 show post 聲明 code man back 怎麽
自然界面裏,各種生物都是有其生命周期的。程序也是有其生命周期的,創建時就是它出生了,當它運行工作中就是成年期,最後少不了要死亡的,那麽程序的死亡是怎麽樣出現的呢?像以前介紹函數GetMessage裏是使用一個循環不斷地檢測消息,周止復始的,是不可能出現死亡的,但它會檢測到消息WM_QUIT就退出來。那現在問題是誰發送WM_QUIT消息出來呢?這就是PostQuitMessage函數所做的工作。當你點擊窗口右上角的關閉時,Windows就會把窗口從系統裏刪除,這時就會發出消息WM_DESTROY給窗口消息處理函數WindowProc,WindowProc收到這條消息後,最需要做的一件事情就是調用 PostQuitMessage發出退出消息,讓消息循環結束。
函數PostQuitMessage聲明如下:
WINUSERAPI
VOID
WINAPI
PostQuitMessage(
__in int nExitCode);
nExitCode是退出標識碼,它被放到WM_QUIT消息的參數wParam裏。
調用這個函數的例子如下:
#001 //
#002 // 目的: 處理主窗口的消息.
#003 //
#004 // 蔡軍生 2007/07/12 QQ:9073204
#005 //
#006 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
#007 {
#008 int wmId, wmEvent;
#009 PAINTSTRUCT ps;
#010 HDC hdc;
#011
#012 switch (message)
#013 {
#014 case WM_COMMAND:
#015 wmId = LOWORD(wParam);
#016 wmEvent = HIWORD(wParam);
#017 // 菜單選項命令響應:
#018 switch (wmId)
#019 {
#020 case IDM_ABOUT:
#021 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
#022 break;
#023 case IDM_EXIT:
#024 DestroyWindow(hWnd);
#025 break;
#026 default:
#027 return DefWindowProc(hWnd, message, wParam, lParam);
#028 }
#029 break;
#030 case WM_PAINT:
#031 hdc = BeginPaint(hWnd, &ps);
#032 //
#033 EndPaint(hWnd, &ps);
#034 break;
#035 case WM_DESTROY:
#036 PostQuitMessage(0);
#037 break;
#038 default:
#039 return DefWindowProc(hWnd, message, wParam, lParam);
#040 }
#041 return 0;
#042 }
第36行就是調用函數PostQuitMessage來處理退出應用程序。
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow
Windows API一日一練 15 PostQuitMessage函數