日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用消息過濾器找回丟失的線程消息

?線程消息在模態(tài)循環(huán)中會丟失,因為消息分發(fā)器(Message Dispatcher)不知道應該如何分發(fā)此消息。但是,如果模態(tài)循環(huán)能支持的話,我們有一種方法可以在它們消失之前看到它們。

遂溪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。

WH_MSGFILTER 消息鉤子可以用來接收傳遞給 CallMsgFilter 函數(shù)的消息。幸運的是,窗口管理器中的所有模態(tài)循環(huán)都使用 CallMsgFilter 來允許線程在線程消息丟失之前捕獲它們。 因此,這為我們提供了一種方法,可以在消息通過模態(tài)循環(huán)時對它們進行監(jiān)控。

讓我們在上次編寫的程序中添加一個消息過濾器,看看消息是如何通過消息過濾器的。但是,請注意,這是不是解決之前問題的正確方法。 我們在上一篇文章中說明了正確的解決方法。我用錯誤的方式來說明消息過濾器,主要是因為它沒有被開發(fā)人員很好地理解。 (例如,消息過濾器的正當理由是,阻止菜單循環(huán)看到某些輸入消息。)

從上一個程序開始,在我們將 PostThreadMessage 更改為 PostMessage 之前,然后進行以下更改:

在這里,我們在線程上安裝了一個消息過濾器鉤子,以便我們可以在消息通過模態(tài)循環(huán)時顯示它們。 code 參數(shù)告訴我們什么類型的模態(tài)循環(huán)檢索到了消息; 我們在這里忽略它,因為我們想對所有模態(tài)循環(huán)進行過濾。

運行這個程序并觀察蜂鳴器聲不再丟失,因為我們的消息過濾器有機會看到它們并對它們做出反應。

消息過濾器技巧依賴于所有模態(tài)循環(huán),它們在分發(fā)它們之前,通過消息過濾器發(fā)送它們檢索到的消息。 如果你正在編寫要進入庫的代碼,并且你有一個模態(tài)循環(huán),那么你也應該在分發(fā)消息之前調用消息過濾器,以防你的代碼庫的使用者想要對消息做一些事情。

MSGF_MYLIBRARY 可以是一個任意值,你可以選擇并記錄在庫的頭文件中。 在 commctrl.h 頭文件中,我們會看到這樣的示例代碼:

上面這些是由外殼(Shell)公共控件庫中的模式循環(huán)調用的消息過濾器。

你可能會問一個問題,“為什么使用消息過濾器掛鉤而不是 GetMessage 掛鉤?”

消息過濾器鉤子比 GetMessage 鉤子占用資源更少,因為它們僅在請求時調用,與 GetMessage 鉤子相反,GetMessage 鉤子為每個檢索到的消息調用。 消息過濾器鉤子還會告訴你哪個模態(tài)循環(huán)正在執(zhí)行過濾,這樣就可以調整相應的動作。

消息過濾器鉤子的缺點是所有模式循環(huán)都需要記住調用 CallMsgFilter,將其作為其調度循環(huán)的一部分。但這個,應該問題不大,一句代碼的事兒。

總結

早在研究 VNC 代碼的那個年代,我就知道 有Windows 消息鉤子這回事兒了。奈何,因為當時水平不濟,一直沒能透徹理解它并真正地寫出一些代碼,也就擱置了。通過今天的文章,我還是沒太能完全理解它,但是,這有助于提醒我:Windows 基礎設施中有很多需要我去發(fā)現(xiàn)的瑰寶。


標題名稱:使用消息過濾器找回丟失的線程消息
本文URL:http://www.5511xx.com/article/djogejd.html