PostThreadMessage

PostThreadMessage

PostThreadMessage是一個Windows API函式。其功能是將一個佇列訊息放入(寄送)到指定執行緒訊息佇列里,不等待執行緒處理訊息就返回。

基本介紹

  • 中文名:PostThreadMessage
  • Windows NT:3.1
  • Windows:95
  • Windows CE:1.0
語法,參數,返回值,備註,需求,

語法

BOOLPostThreadMessage(
DWORDidThread,
UINTMsg,
WPARAMwParam,
LPARAMIParam
);

參數

idThread
其訊息將被寄送的執行緒的執行緒標識符。如果執行緒沒有訊息佇列,此函式將失敗。當執行緒第一次調用一個Win 32 USER或GDI函式時,系統創建執行緒的訊息佇列。要得到更多的信息,參見備註。
Msg
指定將被寄送的訊息的類型。
wParam
指定附加的訊息特定信息。
IParam
指定附加的訊息特定信息。

返回值

如果函式調用成功,返回非零值。如果函式調用失敗,返回值是零。若想獲得更多的錯誤信息,請調用GetLastError函式。如果idThread不是一個有效的執行緒標識符或由idThread確定的執行緒沒有訊息佇列,GetLastError返回ERROR_INVALID_THREAD_ID。

備註

訊息將寄送到的執行緒必須創建訊息佇列,否則調用PostThreadMessage會失敗。用下列方法之一來處理這種情況:
調用PostThreadMessage。如果失敗,調用Sleep,再調用PostThreadMessage,反覆執行,直到PostThreadMessage成功。
創建一個事件對象,再創建執行緒。在調用PostThreadMessage之前,用函式WaitForSingleObject來等待事件被設定為被告知狀態。訊息將寄送到的執行緒調用PeekMessage(&msg,NULL,WM_USER,WM_USER,PM_NOREMOVE)來強制系統創建訊息佇列。設定事件,表示執行緒已準備好接收寄送的訊息。
訊息將寄送到的執行緒通過調用GetMessage或PeekMessage來取得訊息。返回的MSG結構中的hwnd成員為NULL。
每一個訊息佇列將佇列內的訊息限制在10,000個。這個限制應該已經足夠的大。如果一個程式超過這個限制,它應當被重新設計以避免占用如此多的系統資源。要修改訊息個數的限制,應當修改註冊表中對應的項。

需求

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方式實現。

相關詞條

熱門詞條

聯絡我們