自然界面里,各种生物都是有其生命周期的。程序也是有其生命周期的,创建时就是它出生了,当它运行工作中就是成年期,最后少不了要死亡的,那么程序的死亡是怎么样出现的呢?像以前介绍函数
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//
#006LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
#007{
#008int wmId, wmEvent;
#009PAINTSTRUCT ps;
#010HDC hdc;
#011
#012switch (message)
#013{
#014case 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;
#030case WM_PAINT:
#031 hdc = BeginPaint(hWnd, &ps);
#032 //
#033 EndPaint(hWnd, &ps);
#034 break;
#035case WM_DESTROY:
#036 PostQuitMessage(0);
#037 break;
#038default:
#039 return DefWindowProc(hWnd, message, wParam, lParam);
#040}
#041return 0;
#042}
第
36
行就是调用函数
PostQuitMessage
来处理退出应用程序。