Windows API一日一练(15)PostQuitMessage函数

自然界面里,各种生物都是有其生命周期的。程序也是有其生命周期的,创建时就是它出生了,当它运行工作中就是成年期,最后少不了要死亡的,那么程序的死亡是怎么样出现的呢?像以前介绍函数 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 来处理退出应用程序。 

你可能感兴趣的:(windows,工作,api,command,callback,winapi)