VC++ PostMessage 的使用
WindowsAPI函数功能:
该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。
函数原型:
BOOLWINAPIPostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
参数说明:
hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零,否则函数调用返回值为零
使用信息:
Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;
头文件:winuser.h;
输入库:user32.lib;
Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
C语言调用范例:
下面的示例演示如何使用 PostMessage 函数向专用窗口发布消息。
#defineWM_COMPLETE(WM_USER+0) //自定义的专用窗口消息//您可以可以使用如下的代码发布消息到创建了指定的窗口的线程的消息队列中
WaitForSingleObject(pparams->hEvent,INFINITE);
lTime=GetCurrentTime();
PostMessage(pparams->hwnd,WM_COMPLETE,1,lTime);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
HWND hwnd ;
hwnd = FindWindow(NULL,"计算器") ;
PostMessage(hwnd,WM_LBUTTONUP,NULL,NULL) ;
return 0;
}
PostMessage 有四个参数:目标窗口句柄,目标信息,wparam,lparam
wparam,lparam 是附加信息,直接写 NULL 既可
窗口句柄可以使用 FindWindow 找到