日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PeekMessage

發(fā)布時(shí)間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PeekMessage 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

調(diào)度傳入的發(fā)送消息,檢查發(fā)送消息的線程消息隊(duì)列,并檢索消息(如果有的話)。

BOOL WINAPI PeekMessage(_Out_ LPMSG lpMsg,_In_opt_ HWND hWnd,_In_ UINT wMsgFilterMin,_In_ UINT wMsgFilterMax,_In_ UINT wRemoveMsg );

參數(shù)
lpMsg [out]
類型:LPMSG
指向接收消息信息的MSG結(jié)構(gòu)的指針。


hWnd [in,可選]
類型:HWND
要檢索其消息的窗口的句柄。該窗口必須屬于當(dāng)前線程。
如果hWnd為NULL,PeekMessage將檢索屬于當(dāng)前線程的任何窗口的消息,以及hwnd值為NULL的當(dāng)前線程的消息隊(duì)列中的任何消息(請參閱MSG結(jié)構(gòu))。因此,如果hWnd為NULL,則處理窗口消息和線程消息。
如果hWnd為-1,PeekMessage僅檢索當(dāng)前線程的消息隊(duì)列中的消息,其中hwnd值為NULL,即PostMessage(hWnd參數(shù)為NULL)或PostThreadMessage發(fā)布的線程消息 。


wMsgFilterMin [in]
類型:UINT
要檢查的消息范圍內(nèi)的第一條消息的值。使用WM_KEYFIRST(0x0100)指定第一個(gè)鍵盤消息或WM_MOUSEFIRST(0x0200)來指定第一個(gè)鼠標(biāo)消息。
如果wMsgFilterMin和wMsgFilterMax都為零,PeekMessage返回所有可用的消息(即不執(zhí)行范圍過濾)。


wMsgFilterMax [in]
類型:UINT
要檢查的消息范圍內(nèi)的最后一條消息的值。使用WM_KEYLAST指定最后一個(gè)鍵盤消息或WM_MOUSELAST來指定最后一個(gè)鼠標(biāo)消息。
如果wMsgFilterMin和wMsgFilterMax都為零,PeekMessage返回所有可用的消息(即不執(zhí)行范圍過濾)。


wRemoveMsg [in]
類型:UINT
指定消息的處理方式。此參數(shù)可以是以下值中的一個(gè)或多個(gè)。

值 含義
PM_NOREMOVE為0x0000

PeekMessage處理后消息不會(huì)從隊(duì)列中刪除。

PM_REMOVE0×0001

PeekMessage處理后消息將從隊(duì)列中刪除。

PM_NOYIELD0×0002

防止系統(tǒng)釋放等待呼叫者空閑的任何線程(請參閱WaitForInputIdle)。

將此值與PM_NOREMOVEPM_REMOVE組合。

?默認(rèn)情況下,處理所有消息類型。要指定只處理某些消息,請指定以下一個(gè)或多個(gè)值。

值 含義
PM_QS_INPUT(QS_INPUT << 16)

處理鼠標(biāo)和鍵盤消息。

PM_QS_PAINT(QS_PAINT << 16)

處理油漆消息。

PM_QS_POSTMESSAGE((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER)<< 16)

處理所有發(fā)布的消息,包括計(jì)時(shí)器和熱鍵。

PM_QS_SENDMESSAGE(QS_SENDMESSAGE << 16)

處理所有發(fā)送的消息。

?返回值
類型:BOOL
如果消息可用,則返回值不為零。
如果沒有可用的消息,返回值為零。


備注
的PeekMessage檢索與由所述標(biāo)識的窗口相關(guān)聯(lián)的消息的hWnd由指定的參數(shù)或任何其子的IsChild功能,并且通過給定的消息的值的范圍內(nèi)wMsgFilterMin和wMsgFilterMax參數(shù)。
請注意,應(yīng)用程序只能使用wMsgFilterMin和wMsgFilterMax參數(shù)中的低字; 高字保留給系統(tǒng)。


請注意,PeekMessage始終檢索WM_QUIT消息,無論您為wMsgFilterMin和wMsgFilterMax指定了哪些值。


在此呼叫期間,系統(tǒng)提供待處理的非排隊(duì)消息,即使用SendMessage,SendMessageCallback,SendMessageTimeout或SendNotifyMessage函數(shù)發(fā)送到調(diào)用線程擁有的窗口的消息。


然后檢索與指定的過濾器匹配的第一個(gè)排隊(duì)的消息。該系統(tǒng)還可以處理內(nèi)部事件。如果未指定過濾器,則按以下順序處理消息:

  • 發(fā)送信息
  • 發(fā)布消息
  • 輸入(硬件)消息和系統(tǒng)內(nèi)部事件
  • 發(fā)消息(再次)
  • WM_PAINT消息
  • WM_TIMER消息

要在發(fā)布消息之前檢索輸入消息,請使用wMsgFilterMin和wMsgFilterMax參數(shù)。
所述的PeekMessage功能通常不會(huì)刪除WM_PAINT從隊(duì)列中的消息。WM_PAINT消息保留在隊(duì)列中,直到它們被處理。但是,如果WM_PAINT消息具有NULL更新區(qū)域,PeekMessage將其從隊(duì)列中刪除。
如果頂級窗口停止響應(yīng)消息超過幾秒鐘,系統(tǒng)會(huì)將該窗口視為不響應(yīng),并使用具有相同z階,位置,大小和視覺屬性的ghost窗口替換該窗口。這允許用戶移動(dòng)它,調(diào)整大小,甚至關(guān)閉應(yīng)用程序。
但是,這些是唯一可用的操作,因?yàn)閼?yīng)用程序?qū)嶋H上沒有響應(yīng)。當(dāng)一個(gè)應(yīng)用程序被調(diào)試時(shí),系統(tǒng)不會(huì)生成一個(gè)鬼窗口。


總結(jié)

以上是生活随笔為你收集整理的PeekMessage的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。