PostThreadMessage
PostThreadMessage
PostThreadMessage將一條消息投遞給應用程序。這條消息由應用程序的內部GetMessage循環獲得,但不會傳給一個特定的窗口。
PostThreadMessage
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,具體由消息決定
函數功能:該函數將一個消息放入(寄送)到指定線程的消息隊列里,不等待線程處理消息就返回。
參數
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)來強制系統創建消息隊列。設置事件,表示線程已準備好接收寄送的消息。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本:頭文件:winuser.h;輸入庫:user32.lib;Unicode:在Windows NT環境下以Unicode和ANSI方式實現。
此詞條來自網際網路,由網友自由創建。版權屬原作者所有。本站若無意侵犯了你的權利,請來信聯繫我們,我們會及時配合處理。(http://www.clwiki.cn 計算機語言百科全書)