PostThreadMessage
VB聲明
Declare Function PostThreadMessage Lib "user32" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
說明
將一條訊息投遞給應用程式。這條訊息由應用程式的內部GetMessage循環獲得,但不會傳給一個特定的視窗
返回值
Long,如訊息投遞成功,則返回TRUE(非零)。會設定GetLastError
參數表
參數 類型及說明
idThread Long,用於接收訊息的那個執行緒的標識符
msg Long,訊息標識符
wParam Long,具體由訊息決定
ByVal Long,具體由訊息決定
函式功能
函式功能:該函式將一個訊息放入(寄送)到指定執行緒的訊息佇列里,不等待執行緒處理訊息就返回。
函式原型:BOOL PostThreadMessage(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM IParam);
參數說明
參數
idThread:其訊息將被寄送的執行緒的執行緒標識符。如果執行緒沒有訊息佇列,此函式將失敗。當執行緒第一次調用一個Win 32 USER或GDI函式時,系統創建執行緒的訊息佇列。要得到更多的信息,參見備註。
Msg:指定將被寄送的訊息的類型。
wParam:指定附加的訊息特定信息。
IParam:指定附加的訊息特定信息。
返回值:如果函式調用成功,返回非零值。如果函式調用失敗,返回值是零。若想獲得更多的錯誤信息,請調用GetLastError函式。如果idThread不是一個有效的執行緒標識符或由idThread確定的執行緒沒有訊息隊
列,GetLastError返回ERROR_INVALID_THREAD。
備注:訊息將寄送到的執行緒必須創建訊息佇列,否則調用PostThreadMessage會失敗。用下列方法之一來處理這種情況:
調用PostThreadMessage。如果失敗,調用Sleep,再調用PostThreadMessage,反覆執行,直到PostThreadMessage成功。
創建一個事件對象,再創建執行緒。在調用PostThreadMessage之前,用函式WaitForSingleObject來等特事件被設定為被告知狀態。訊息將寄送到的執行緒調用PeedMessage(£msg,NULL,WM_USER,WM_USER,PM_NOREMOVE)來強制系統創建訊息佇列。設定事件,表示執行緒已準備好接收寄送的訊息。
訊息將寄送到的執行緒通過調用GetMesssge或PeekMesssge來取得訊息。返回的MSG結構中的hwnd成員為NULL。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本:頭檔案:winuser.h;輸入庫:user32.lib;Unicode:在Windows NT環境下以Unicode和ANSI方式實現。
著作權
此詞條來自網際網路,由網友自由創建。著作權屬原作者所有。本站若無意侵犯了你的權利,請來信聯繫我們,我們會及時配合處理。(http://www.clwiki.cn 計算機語言百科全書)