Windows API一日一練(15)PostQuitMessage函數

來源:互聯網
上載者:User

自然介面裡,各種生物都是有其生命週期的。程式也是有其生命週期的,建立時就是它出生了,當它運行工作中就是成年期,最後少不了要死亡的,那麼程式的死亡是怎麼樣出現的呢?像以前介紹函數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來處理退出應用程式。

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/caimouse/archive/2007/07/25/1706634.aspx

                if(msg.message==WM_QUIT)
                {
                    PostMessage(g_Hwnd, WM_CLOSE, 0, 0);
                    break;
                }

 

WM_DESTROY->WM_QUIT->WM_CLOSE

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.