PeekMessage

PeekMessage

PeekMessage是一個Windows API函式。該函式為一個訊息檢查執行緒訊息佇列,並將該訊息(如果存在)放於指定的結構。

基本介紹

  • 外文名:PeekMessage
  • BOOL  : PeekMessage
  • LPMSG: IpMsg,
  • HWND : hWnd,
語法,參數,返回值,備註,需求,

語法

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_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:處理所有傳送訊息。

返回值

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

備註

和函式GetMessage不一樣的是,GetMessage:從系統獲取訊息,將訊息從系統中移除,屬於阻塞函式。當系統無訊息時,GetMessage會等待下一條訊息。而函式PeekMesssge是以查看的方式從系統中獲取訊息,可以不將訊息從系統中移除,是非阻塞函式;當系統無訊息時,返回FALSE,繼續執行後續代碼。
PeekMesssge只得到那些與參數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訊息不從佇列里清除。

需求

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

相關詞條

熱門詞條

聯絡我們