PeekMessage

該函數爲一個消息檢查線程消息隊列,並將該消息(如果存在)放於指定的結構。   

函數原型:BOOL PeekMessage(LPMSG IpMsg,HWND hWnd,UINT wMSGfilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);   

參數:   

 lpMsg:接收消息信息的MSG結構指針。   

 hWnd:其消息被檢查的窗口的句柄。   

wMsgFilterMin:指定被檢查的消息範圍裏的第一個消息。   

wMsgFilterMax:指定被檢查的消息範圍裏的最後一個消息。   

wRemoveMsg:確定消息如何被處理。此參數可取下列值之一:   

 PM_NOREMOVE:PeekMessage處理後,消息不從隊列裏除掉。   

 PM_REMOVE:PeekMessage處理後,消息從隊列裏除掉。   

可將PM_NOYIELD隨意組合到PM_NOREMOVE或PM_REMOVE。此標誌使系統不釋放等待調用程序空閒的線程。    缺省地,處理所有類型的消息。若只處理某些消息,指定一個或多個下列值:   

PM_QS_INPUT:Windows NT5.0和Windows 98:處理鼠標和鍵盤消息。   

PM_QS_PAINT:Windows NT 5.0和Windows 98:處理畫圖消息。   

 PM_QS_POSTMESSAGE:Windows NT 5.0和Windows 98:處理所有被寄送的消息,包括計時器和熱鍵。    PM_QS_SENDMESSAGE:Windows NT 5.0和Windows 98:處理所有發送消息。   

返回值:如果消息可得到,返回非零值;如果沒有消息可得到,返回值是零。   

備註:和函數GetMessage不一樣的是,函數PeekMesssge在返回前不等待消息被放到隊列裏。   

PeekMesssge只得到那些與參數hWnd標識的窗口相聯繫的消息或被lsChild確定爲其子窗口相聯繫的消息,並且該消息要在由參數wMsgFiterMin和wMsgFiherMax確定的範圍內。如果hWnd爲NULL,則PeekMessage接收屬於當前調用線程的窗口的消息(PeekMessage不接收屬於其他線程的窗口的消息)。如果hWnd爲C1,PeekMessage只返回hWnd值爲NULL的消息,該消息由函數PostThreadMessage寄送。如果wMsgFilterMin和wMsgFilterMax都爲零,GetMessage返回所有可得的消息(即,無範圍過濾)。   

常數WM_KEYFIRST和WMKEYLAST可作爲過濾值取得所有鍵盤消息;常數WM_MOUSEFIRST和WM_MOUSELAST可用來接收所有的鼠標消息。   

PeekMessage通常不從隊列裏清除WM_PAINT消息。該消息將保留在隊列裏直到處理完畢。但如果WM_PAINT消息有一個空更新區,PeekMessage將從隊列裏清除WM_PAINT消息。

發佈了44 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章