PostThreadMessage

【勇芳软件工作室】汉化HomePreviousNext

PostThreadMessage功能将消息放置在指定线程的消息队列中,然后返回,而不等待线程处理消息。

BOOL PostThreadMessage(

DWORD 【idThread】,//线程标识符
UINT 【消息】,//要发帖
WPARAM 【wParam中】,//第一个消息参数
LPARAM 【lParam的】//第二个消息参数
); 

参数

【idThread】

标识消息将被发布到的线程。

如果指定的线程没有消息队列,该函数将失败。当线程首次调用Win32 USER或GDI函数之一时,系统会创建线程的消息队列。有关详细信息,请参阅备注部分。

【消息】

指定要发布的消息的类型。

【wParam中】

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

【lParam的】

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

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.GetLastError如果【idThread】不是有效的线程标识符,或【idThread】指定的线程没有消息队列,则返回ERROR_INVALID_THREAD_ID。

备注

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

*致电PostThreadMessage.如果失败,请调用睡觉,再次致电PostThreadMessage.重复,直到PostThreadMessage成功。

*创建一个事件对象,然后创建线程。在调用PostThreadMessage之前,使用WaitForSingleObject功能等待事件设置为信号状态。在发送消息的线程中,调用PeekMessage(& msg,NULL,WM_USER,WM_USER,PM_NOREMOVE)强制系统创建消息队列。设置事件,以指示线程准备好接收已发送的消息。

发送消息的线程通过调用GetMessagePeekMessage功能检索消息。返回的MSG结构的HWND成员为NULL。

也可以看看

GetCurrentThreadId, GetMessage, GetWindowThreadProcessId, MSG, PeekMessage, PostMessage, 睡觉, WaitForSingleObject