分享好友 天南地北首页 网站导航

什么是PostThreadMessage

网友 2023-09-16 14:01 · 头闻号教育培训

最佳答案:

PostThreadMessage是一个Windows API函数。其功能是将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回。

详情介绍

PostThreadMessage是一个Windows API函数。其功能是将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回。

中文名
PostThreadMessage
Windows NT
3.1
Windows
95
Windows CE
1.0

PostThreadMessage语法

BOOLPostThreadMessage(

DWORDidThread,

UINTMsg,

WPARAMwParam,

LPARAMIParam

);

PostThreadMessage参数

idThread

其消息将被寄送的线程的线程标识符。如果线程没有消息队列,此函数将失败。当线程第一次调用一个Win 32 USER或GDI函数时,系统创建线程的消息队列。要得到更多的信息,参见备注。

Msg

指定将被寄送的消息的类型。

wParam

指定附加的消息特定信息。

IParam

指定附加的消息特定信息。

PostThreadMessage返回值

如果函数调用成功,返回非零值。如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。如果idThread不是一个有效的线程标识符或由idThread确定的线程没有消息队列,GetLastError返回ERROR_INVALID_THREAD_ID。

PostThreadMessage其他信息

消息将寄送到的线程必须创建消息队列,否则调用PostThreadMessage会失败。用下列方法之一来处理这种情况:

调用PostThreadMessage。如果失败,调用Sleep,再调用PostThreadMessage,反复执行,直到PostThreadMessage成功。

创建一个事件对象,再创建线程。在调用PostThreadMessage之前,用函数WaitForSingleObject来等待事件被设置为被告知状态。消息将寄送到的线程调用PeekMessage(&msg,NULL,WM_USER,WM_USER,PM_NOREMOVE)来强制系统创建消息队列。设置事件,表示线程已准备好接收寄送的消息。

消息将寄送到的线程通过调用GetMessage或PeekMessage来取得消息。返回的MSG结构中的hwnd成员为NULL。

每一个消息队列将队列内的消息限制在10,000个。这个限制应该已经足够的大。如果一个程序超过这个限制,它应当被重新设计以避免占用如此多的系统资源。要修改消息个数的限制,应当修改注册表中对应的项。

PostThreadMessage需求

DLL最低版本

user32.dll

头文件

在Winuser.h中声明,包含于Windows.h

库文件

User32.lib

操作系统最低版本

Windows 95, Windows NT 3.1

Unicode

以ANSI和Unicode版本实现

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

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞