现在的位置: 首页 > 综合 > 正文

(15)PostQuitMessage函数

2013年10月05日 ⁄ 综合 ⁄ 共 1479字 ⁄ 字号 评论关闭
自然界面里,各种生物都是有其生命周期的。程序也是有其生命周期的,创建时就是它出生了,当它运行工作中就是成年期,最后少不了要死亡的,那么程序的死亡是怎么样出现的呢?像以前介绍函数GetMessage里是使用一个循环不断地检测消息,周止复始的,是不可能出现死亡的,但它会检测到消息WM_QUIT就退出来。那现在问题是谁发送WM_QUIT消息出来呢?这就是PostQuitMessage函数所做的工作。当你点击窗口右上角的关闭时,Windows就会把窗口从系统里删除,这时就会发出消息WM_DESTROY给窗口消息处理函数WindowProcWindowProc收到这条消息后,最需要做的一件事情就是调用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 }

 

抱歉!评论已关闭.