成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用消息過濾器找回丟失的線程消息

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

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

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

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

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

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

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

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

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

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

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

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

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

總結

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

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2009-09-25 15:19:44

Hibernate過濾

2021-07-05 15:22:03

Servlet過濾器客戶端

2024-01-05 09:04:35

隆過濾器數據結構哈希函數

2009-06-18 10:13:00

Hibernate過濾

2009-07-08 17:33:37

Servlet過濾器

2024-11-04 08:45:48

布隆過濾器元數據指紋值

2009-07-08 15:30:56

Servlet過濾器

2009-07-14 09:09:08

Swing模型過濾器

2009-07-08 16:07:04

Servlet過濾器配

2009-09-29 13:55:23

Hibernate設置

2011-06-29 16:14:59

Qt 事件 過濾器

2020-10-29 07:16:26

布隆過濾器場景

2016-12-07 09:56:13

JavaFilter過濾器

2025-04-21 00:50:50

2017-07-18 14:10:31

大數據Apache Flum過濾器

2017-04-12 14:43:01

Spring ClouZuul過濾器

2009-07-03 18:26:11

Servlet過濾器

2022-03-31 08:26:44

RocketMQ消息排查

2024-03-15 11:21:22

布隆過濾器數據庫數據

2009-07-06 13:02:49

Servlet過濾器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂精品| 久久精品亚洲 | 国产高清久久久 | 欧美日韩精品久久久免费观看 | 欧美视频精品 | 一级大片 | 天堂综合网久久 | 在线中文字幕av | 精品视频99 | 五月天综合网 | 久久国产成人精品国产成人亚洲 | 精品久久一区 | 99精品久久 | 亚洲成人精品一区二区 | 一级久久久久久 | 一区二区在线不卡 | 久久精品亚洲欧美日韩久久 | 精品日韩一区 | 久国产| 国产欧美日韩在线观看 | 欧美无乱码久久久免费午夜一区 | 91国内外精品自在线播放 | 精品国产伦一区二区三区观看体验 | 国产精品久久久久久吹潮 | 国产精品综合一区二区 | 国产欧美一区二区三区在线看 | 久久99精品国产自在现线小黄鸭 | 99免费在线视频 | www日韩 | 香蕉视频黄色 | 午夜成人在线视频 | 日本久草| 中文字幕亚洲一区二区三区 | 国产一二三区电影 | 黄a在线播放 | 日韩一区不卡 | 日本免费一区二区三区四区 | 欧美日韩国产一区二区三区 | 国产一区二区三区在线 | 国产精品视频一区二区三区 | 午夜二区|