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