`
yuanjinxiu
  • 浏览: 658665 次
文章分类
社区版块
存档分类
最新评论

Windows API一日一练(15)PostQuitMessage函数

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

相关推荐

    Windows API一日一练TXT版

    Windows API 一日一练(15)PostQuitMessage 函数------------------------------------------32 Windows API 一日一练(16)BeginPaint 和 EndPaint 函数 -------------------------------34 Windows API 一日一练(17...

    易语言API创建窗口

    易语言API创建窗口源码,API创建窗口,创建窗口,窗口函数,CreateWindowEx,RegisterClassEx,ShowWindow,UpdateWindow,GetModuleHandle,DefWindowProc,DispatchMessage,GetMessage,TranslateMessage,LoadCursor,LoadIcon...

    c语言贪吃蛇源码(带注释)

    用windows api 做的贪吃蛇 #include<Windows.h> #include"resource.h" #include"Node.h" #include #include TCHAR szAppname[] = TEXT("Snack_eat"); #define SIDE (x_Client/80) #define x_Client 800 #define y_...

    Delphi Pascal API创建窗体

    Windows, Messages; var TheMessage: TMsg; const ClassName = 'MainForm_FOrm1'; // 窗体过程回调函数 function FormProc(hForm, MsgID, WParam, LParam: LongWord): LongWord; stdcall; const {$J+} ...

    最全的WinAPI手册

    Win32 API 简介 15 第二章 窗口管理函数 16 第一节 易用特性函数(Accessibility Features) 20 SoundSentryProc 20 SystemParametersinfo 21 第二节 按钮函数(Button) 34 CheckDlgButton 34 CheckRadioButton 34 ...

    标准windows sdk模板

    #include <windows.h> // 5. 窗口过程处理 LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY:...

    Window 消息大全

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递给应用程序的,这个记录中...

    易语言-API实现动态窗口类

    动态窗口类,源码是易语言API的应用教程。 调用了以下API: PlaySound BeginPaint GetClientRect DrawText EndPaint PostQuitMessage DefWindowProc LoadIcon LoadCursor GetStockObject RegisterClass CreateWindow...

    易语言-Windows消息大全易语言版转换程序

    Windows消息大全易语言版,消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递...

    *号查看器v0.11

    很简单,使用WindowFormPoint API函数。该函数接受一个POINT类结构的参数, 并返回包含该点的窗口句柄,函数原型如下: HWND WindowFromPoint(POINT point) ; 知识准备充足,代码如下: /*-------------------...

    PT80-NEAT开发指南v1.1

    第一章 关于本手册........................................................................................................................................ 1 简介 ..........................................

    在C#中SendMessage和PostMessage的参数传递

    在C#中可以使用Window API提供的SendMessage和PostMessage来传递参数。两者的区别简单介绍下:返回值的不同,我们先看一下 MSDN 里的声明: LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM ...

    VC 创建WinExample和MFCExample窗口程序演示.rar

    VC WinExample和MFCExample程序演示,是创建此两类程序的演示,一种是使用WINAPI的方式 创建程序窗口,另一种是采用MFC方式创建窗口,下面列举一上结使用WINAPI方式创建窗口的具体代码,完整代码请下载本源码。...

    绘图板绘图板

    一个简单的绘图板win32程序 #include "windows.h" HINSTANCE hinst=NULL; HWND btn_close,btn_line,btn_rect,btn_ell,btn_cpen,btn_cbrush,btn_label; HDC hDC,hDC_lable; RECT drawrect,wndrect; RECT prect,...

    WinAPI (Delphi版)

    Creating Windows CreateMDIWindow CreateWindow CreateWindowEx RegisterClass RegisterClassEx UnregisterClass Message Processing BroadcastSystemMessage CallNextHookEx CallWindowProc...

    自己写的小游戏壳

    要通过函数指针 创建子类的对象 if CGameCtrl::pfun create NULL { MessageBox NULL "创建游戏失败" "提示" MB OK ; 销毁窗口 DestroyWindow hwnd ; 退出程序 ...

    [API] 透明提示框

    Declare Sub PostQuitMessage Lib "user32" (ByVal nExitCode As Long) Declare Function BeginPaint Lib "user32" (ByVal hwnd As Long, lpPaint As PAINTSTRUCT) As Long Declare Function EndPaint Lib "user32" ...

    贪吃蛇代码

    用链表实现贪吃蛇#include <windows.h> #include #include #include #include //结构体桩坐标 struct Node { int x; int y; struct Node *pNext; }; typedef struct Node Snake; typedef struct Node Bean;...

    键盘消息源代码

    #include <windows.h> #include //全局变量 RECT rc; //记录滚屏的矩形区域 int xChar, yChar; //文本输入点坐标 WNDCLASSEX wnd; //窗口类结构变量 char szAppName[] = "键盘...

    易语言凭空创建窗口

    凭空创建窗口,窗口函数,CreateWindowEx,RegisterClassEx,ShowWindow,UpdateWindow,GetModuleHandle,DefWindowProc,DispatchMessage,GetMessage,TranslateMessage,LoadCursor,LoadIcon,PostQuitMessage

Global site tag (gtag.js) - Google Analytics