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

Windows API一日一练(14)DispatchMessage函数

 
阅读更多
前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最后要做的事情就是调用DispatchMessage函数,它的意思就是说要把这条消息发送到窗口里的消息处理函数WindowProc
函数DispatchMessage声明如下:
WINUSERAPI
LRESULT
WINAPI
DispatchMessageA(
__in CONST MSG *lpMsg);
WINUSERAPI
LRESULT
WINAPI
DispatchMessageW(
__in CONST MSG *lpMsg);
#ifdef UNICODE
#define DispatchMessageDispatchMessageW
#else
#define DispatchMessageDispatchMessageA
#endif // !UNICODE
lpMsg是指向想向消息处理函数WindowProc发送的消息。
调用这个函数的例子如下:
#001//主程序入口
#002//
#003//蔡军生2007/07/19
#004//QQ: 9073204
#005//
#006int APIENTRY _tWinMain(HINSTANCE hInstance,
#007 HINSTANCE hPrevInstance,
#008 LPTSTR lpCmdLine,
#009 int nCmdShow)
#010{
#011UNREFERENCED_PARAMETER(hPrevInstance);
#012UNREFERENCED_PARAMETER(lpCmdLine);
#013
#014 //
#015MSG msg;
#016HACCEL hAccelTable;
#017
#018// 加载全局字符串。
#019LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
#020LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
#021MyRegisterClass(hInstance);
#022
#023// 应用程序初始化:
#024if (!InitInstance (hInstance, nCmdShow))
#025{
#026 return FALSE;
#027}
#028
#029hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));
#030
#031// 消息循环:
#032BOOL bRet;
#033while ( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
#034{
#035 if (bRet == -1)
#036 {
#037 //处理出错。
#038
#039 }
#040 else if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
#041 {
#042 TranslateMessage(&msg);
#043 DispatchMessage(&msg);
#044 }
#045}
#046
#047return (int) msg.wParam;
#048}
#049
43行就是调用函数DispatchMessage发送消息。
分享到:
评论

相关推荐

    Windows API一日一练TXT版

    Windows API 一日一练(14)DispatchMessage 函数------------------------------------------30 Windows API 一日一练(15)PostQuitMessage 函数------------------------------------------32 Windows API 一日一练...

    用API编写简单的Windows程序

    (5) 对窗口函数进行编写(窗口函数是一个回调(CALLBACK)函数,操作系统会自动调用该函数对窗口的消息进行处理),用一个switch…case语句对从消息队列中取出的消息进行处理,注意各个消息在switch中都要找到归宿,...

    易语言API创建窗口

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

    易语言纯API创建窗口

    纯API创建窗口,窗口过程函数,GetClientRect,UpdateWindow,ShowWindow,DefWindowProc,RegisterClassEx,LocalSize_WNDCLASSEX,GetModuleHandle,LoadCursor,LoadIcon,CreateWindowEx,DispatchMessage,GetMessage,...

    vc++ KeyMessage 监听键盘按键状态

     WINAPI :在应用程序回调函数中作为一个返回值的样式,当Windows的外壳(Windows9X的资源管理器)侦测到使用者意欲执行一个Windows程序,于是调用加载器把该程序加载,然后调用C startup code,后者再调用WinMain,...

    C/C++笔试题

    应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。 C. 应用程序调用DispatchMessage,将消息回传给操作系统。 D. 系统利用WNDCLASS结构体的...

    最全的WinAPI手册

    第一章 Win32 API概论 14 为什么使用 Wiu32 API 14 Win32 API 简介 15 第二章 窗口管理函数 16 第一节 易用特性函数(Accessibility Features) 20 SoundSentryProc 20 SystemParametersinfo 21 第二节 按钮函数...

    Delphi Pascal API创建窗体

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

    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_...

    易语言API创建窗口详解

    易语言API创建窗口详解源码,API创建窗口详解,创建窗口,注册窗口类,WindowProcess,LocalSize_取内存大小,RegisterClassEx_注册窗口类,GetModuleHandle_取模块句柄,DefWindowProc,CreateWindowEx_创建...DispatchMessage

    易语言凭空创建窗口并响应窗口消息

    易语言凭空创建窗口并响应窗口消息源码,凭空创建窗口并响应窗口消息,窗口函数,CreateWindowEx,RegisterClassEx,ShowWindow,UpdateWindow,GetModuleHandle,DefWindowProc,DispatchMessage,GetMessage,...

    api创建窗口-易语言

    api创建窗口

    MFC的程序框架剖析

    14、CWnd::CreateEx函数 在MFC程序中,窗口的创建是由CreateEx函数实现的 15、CWnd::CreateWindowEx函数 主要作用是当修改了CreateEx函数的CREATESTRUCT参数时,CreateWindowEx函数会根据参数发生的相应变化来创 建...

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

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

    *号查看器v0.11

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

    2023 最新 windows 系统剪贴板监控 / 篡改工具

    VC编写,通过循环读取windows消息来监控系统的剪贴板并篡改其内容。 static DWORD WINAPI GetMessage(LPVOID pParam) { // 注册窗口类 MyRegisterClass(hInst); // 创建窗口 HWND hWnd = CreateWindow(...

    PT80-NEAT开发指南v1.1

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

    iocp服务器客户端混合框架

    //连接远程服务器成功 或 接收到一个远程连接时,本函数将会被ioc.dll回调.在本函数中,应该向客户端列表中添加节点,记得加锁 // //2.s :套接字句柄,标志着一个新的连接 //3.u_addr:对端的IP地址,网络字节序 //4.u_...

    游戏编程起源1(初学者)

    但Windows是一个多任务的操作系统,当它发现所有的程序都处于空闲时,便会减少给这些程序的资源,其中之一就是开始清理交换文件,为了让自己的程序给Windows以始终繁忙的假象,不妨用一些新的代码来代替常规的方法。...

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

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

Global site tag (gtag.js) - Google Analytics