前面已经介绍从系统队列里获取一条消息,然后经过快捷键的函数检查,又通过字符消息函数的转换,最后要做的事情就是调用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 一日一练(14)DispatchMessage 函数------------------------------------------30 Windows API 一日一练(15)PostQuitMessage 函数------------------------------------------32 Windows API 一日一练...
(5) 对窗口函数进行编写(窗口函数是一个回调(CALLBACK)函数,操作系统会自动调用该函数对窗口的消息进行处理),用一个switch…case语句对从消息队列中取出的消息进行处理,注意各个消息在switch中都要找到归宿,...
易语言API创建窗口源码,API创建窗口,创建窗口,窗口函数,CreateWindowEx,RegisterClassEx,ShowWindow,UpdateWindow,GetModuleHandle,DefWindowProc,DispatchMessage,GetMessage,TranslateMessage,LoadCursor,LoadIcon...
纯API创建窗口,窗口过程函数,GetClientRect,UpdateWindow,ShowWindow,DefWindowProc,RegisterClassEx,LocalSize_WNDCLASSEX,GetModuleHandle,LoadCursor,LoadIcon,CreateWindowEx,DispatchMessage,GetMessage,...
WINAPI :在应用程序回调函数中作为一个返回值的样式,当Windows的外壳(Windows9X的资源管理器)侦测到使用者意欲执行一个Windows程序,于是调用加载器把该程序加载,然后调用C startup code,后者再调用WinMain,...
应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。 C. 应用程序调用DispatchMessage,将消息回传给操作系统。 D. 系统利用WNDCLASS结构体的...
第一章 Win32 API概论 14 为什么使用 Wiu32 API 14 Win32 API 简介 15 第二章 窗口管理函数 16 第一节 易用特性函数(Accessibility Features) 20 SoundSentryProc 20 SystemParametersinfo 21 第二节 按钮函数...
Windows, Messages; var TheMessage: TMsg; const ClassName = 'MainForm_FOrm1'; // 窗体过程回调函数 function FormProc(hForm, MsgID, WParam, LParam: LongWord): LongWord; stdcall; const {$J+} ...
用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创建窗口详解,创建窗口,注册窗口类,WindowProcess,LocalSize_取内存大小,RegisterClassEx_注册窗口类,GetModuleHandle_取模块句柄,DefWindowProc,CreateWindowEx_创建...DispatchMessage
易语言凭空创建窗口并响应窗口消息源码,凭空创建窗口并响应窗口消息,窗口函数,CreateWindowEx,RegisterClassEx,ShowWindow,UpdateWindow,GetModuleHandle,DefWindowProc,DispatchMessage,GetMessage,...
api创建窗口
14、CWnd::CreateEx函数 在MFC程序中,窗口的创建是由CreateEx函数实现的 15、CWnd::CreateWindowEx函数 主要作用是当修改了CreateEx函数的CREATESTRUCT参数时,CreateWindowEx函数会根据参数发生的相应变化来创 建...
动态窗口类,源码是易语言API的应用教程。 调用了以下API: PlaySound BeginPaint GetClientRect DrawText EndPaint PostQuitMessage DefWindowProc LoadIcon LoadCursor GetStockObject RegisterClass CreateWindow...
很简单,使用WindowFormPoint API函数。该函数接受一个POINT类结构的参数, 并返回包含该点的窗口句柄,函数原型如下: HWND WindowFromPoint(POINT point) ; 知识准备充足,代码如下: /*-------------------...
VC编写,通过循环读取windows消息来监控系统的剪贴板并篡改其内容。 static DWORD WINAPI GetMessage(LPVOID pParam) { // 注册窗口类 MyRegisterClass(hInst); // 创建窗口 HWND hWnd = CreateWindow(...
第一章 关于本手册........................................................................................................................................ 1 简介 ..........................................
//连接远程服务器成功 或 接收到一个远程连接时,本函数将会被ioc.dll回调.在本函数中,应该向客户端列表中添加节点,记得加锁 // //2.s :套接字句柄,标志着一个新的连接 //3.u_addr:对端的IP地址,网络字节序 //4.u_...
但Windows是一个多任务的操作系统,当它发现所有的程序都处于空闲时,便会减少给这些程序的资源,其中之一就是开始清理交换文件,为了让自己的程序给Windows以始终繁忙的假象,不妨用一些新的代码来代替常规的方法。...
在C#中可以使用Window API提供的SendMessage和PostMessage来传递参数。两者的区别简单介绍下:返回值的不同,我们先看一下 MSDN 里的声明: LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM ...