函式聲明
GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
參數:
lpMsg:指向MSG結構的指針,該結構從執行緒的訊息佇列里接收訊息信息。
hWnd:取得其訊息的視窗的句柄。當其值取NULL時,GetMessage為任何屬於調用執行緒的視窗檢索訊息,執行緒訊息通過PostThreadMessage寄送給調用執行緒。
wMsgFilterMin:指定被檢索的最小訊息值的整數。
wMsgFilterMax:指定被檢索的最大訊息值的整數。
返回值:如果函式取得WM_QUIT之外的其他訊息,返回非零值。如果函式取得WM_QUIT訊息,返回值是零。如果出現了錯誤,返回值是-1。例如,當hWnd是無效的視窗句柄或lpMsg是無效的指針時。若想獲得更多的錯誤信息,請調用GetLastError函式。
備註
應用程式通常用返回值來確定是否終止主訊息循環並退出程式。
GetMesssge只接收與參數hWnd標識的視窗或子視窗相聯繫的訊息,子視窗由函式IsChild決定,訊息值的範圍由參數wMsgFilterMin和wMsgFilterMax給出。如果hWnd為NULL,則GetMessage接收屬於調用執行緒的視窗的訊息,執行緒訊息由函式PostThreadMessage寄送給調用執行緒。GetMessage不接收屬於其他執行緒或其他執行緒的視窗的訊息,即使hWnd為NULL。由PostThreadMessage寄送的執行緒訊息,其訊息hWnd值為NULL。如果wMsgFilterMin和wMsgFilterMax都為零,GetMessage返回所有可得的訊息(即,無範圍過濾)。
常數 WM_KEYFIRST和WM_KEYLAST可作為過濾值取得與鍵盤輸入相關的所有訊息:常數WM_MOUSEFIRST和WM_MOUSELST可用來接收所有的滑鼠訊息。如果wMsgFilterMin和wMsgFilterMax都為零,GetMessage返回所有可得的訊息(即,無範圍過濾)。
GetMessage不從佇列里清除WM.PAINT訊息。該訊息將保留在佇列里直到處理完畢。
注意,此函式的返回值可非零、零或-1,應避免如下代碼出現:
while(GetMessage(IpMsg,hwnd,0,0))…
返回-1時處理錯誤而不是繼續循環
速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本:頭檔案:winuser.h;輸入庫:user32.Lib;Unicode:在Windows NT環境下以Unicode和ANSI方式實現。