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