当前位置:首页 > windos > 正文

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 来处理退出应用程序。 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow