PostMessage--Windows API

来源:互联网 发布:php解密工具 编辑:程序博客网 时间:2024/05/17 02:35

PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。

函数功能

该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。

函数原型

1
BOOLWINAPI PostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);

参数说明

hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、 被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
IParam:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。


使用信息

Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;输入库:user32.lib;Unicode:在Windows NT环境下以Unicode和ANSI方式实现。


C语言调用范例

下面的示例演示如何使用 PostMessage 函数向专用窗口发布消息。
假设您定义了名为 WM_COMPLETE 的专用窗口消息:
1
2
3
4
5
#define    WM_COMPLETE    (WM_USER + 0)
//您可以可以使用如下的代码发布消息到创建了指定的窗口的线程的消息队列中
WaitForSingleObject(pparams->hEvent, INFINITE);
lTime = GetCurrentTime();
PostMessage(pparams->hwnd, WM_COMPLETE, 1, lTime);

原创粉丝点击