Windows API一日一练 15 PostQuitMessage函数

2021-06-16 18:04

阅读:522

标签:man   pos   source   cas   dia   bsp   exit   点击   选项   

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

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

Windows API一日一练 15 PostQuitMessage函数

标签:man   pos   source   cas   dia   bsp   exit   点击   选项   

原文地址:https://www.cnblogs.com/skiwnchh/p/10347032.html


评论


亲,登录后才可以留言!