複製鏈接
請複製以下鏈接發送給好友

PeekMessage

鎖定
PeekMessage是一個Windows API函數。該函數為一個消息檢查線程消息隊列,並將該消息(如果存在)放於指定的結構。
外文名
PeekMessage
BOOL
PeekMessage
LPMSG
IpMsg,
HWND
hWnd,

PeekMessage語法

BOOL PeekMessage(
LPMSG IpMsg,
HWND hWnd,
UINT wMSGfilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg
);

PeekMessage參數

lpMsg
接收消息信息的MSG結構指針。
hWnd
其消息被檢查的窗口句柄
wMsgFilterMin
指定被檢查的消息範圍裏的第一個消息。
wMsgFilterMax
指定被檢查的消息範圍裏的最後一個消息。
wRemoveMsg
確定消息如何被處理。此參數可取下列值之一:
意義
PM_NOREMOVE
PeekMessage處理後,消息不從隊列裏除掉。
PM_REMOVE
PeekMessage處理後,消息從隊列裏除掉。
PM_NOYIELD
此標誌使系統不釋放等待調用程序空閒的線程。可將PM_NOYIELD隨意組合到PM_NOREMOVE或PM_REMOVE。
缺省地,處理所有類型的消息。若只處理某些消息,指定一個或多個下列值:
意義
PM_QS_INPUT
Windows NT 5.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:處理所有發送消息。

PeekMessage返回值

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

PeekMessage其他信息

和函數PeekMessage不一樣的是,GetMessage:從系統獲取消息,將消息從系統中移除,屬於阻塞函數。當系統無消息時,GetMessage會等待下一條消息。而函數PeekMesssge是以查看的方式從系統中獲取消息,可以不將消息從系統中移除,是非阻塞函數;當系統無消息時,返回FALSE,繼續執行後續代碼。
PeekMessage只得到那些與參數hWnd標識的窗口相聯繫的消息或被lsChild確定為其子窗口相聯繫的消息,並且該消息要在由參數wMsgFiterMin和wMsgFiherMax確定的範圍內。如果hWnd為NULL,則PeekMessage接收屬於當前調用線程的窗口的消息(PeekMessage不接收屬於其他線程的窗口的消息)。如果hWnd為-1,PeekMessage只返回hWnd值為NULL的消息,該消息由函數PostThreadMessage寄送。如果wMsgFilterMin和wMsgFilterMax都為零,PeekMessage返回所有可得的消息(即,無範圍過濾)。
常數WM_KEYFIRST和WM_KEYLAST可作為過濾值取得所有鍵盤消息;常數WM_MOUSEFIRST和WM_MOUSELAST可用來接收所有的鼠標消息。
PeekMessage通常不從隊列裏清除WM_PAINT消息。該消息將保留在隊列裏直到處理完畢。但如果WM_PAINT消息不指向無效區,PeekMessage將能夠從隊列裏清除WM_PAINT消息。
Windows CE:具備無效區的WM_PAINT消息不從隊列裏清除。

PeekMessage需求

DLL最低版本
user32.dll
頭文件
在Winuser.h中聲明,包含於Windows.h。
庫文件
User32.lib
操作系統最低版本
Windows 95, Windows NT 3.1
Unicode
以ANSI和Unicode版本實現。