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

使用消息過(guò)濾器找回丟失的線(xiàn)程消息

開(kāi)發(fā) 前端
消息過(guò)濾器技巧依賴(lài)于所有模態(tài)循環(huán),它們?cè)诜职l(fā)它們之前,通過(guò)消息過(guò)濾器發(fā)送它們檢索到的消息。 如果你正在編寫(xiě)要進(jìn)入庫(kù)的代碼,并且你有一個(gè)模態(tài)循環(huán),那么你也應(yīng)該在分發(fā)消息之前調(diào)用消息過(guò)濾器,以防你的代碼庫(kù)的使用者想要對(duì)消息做一些事情。

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

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

讓我們?cè)谏洗尉帉?xiě)的程序中添加一個(gè)消息過(guò)濾器,看看消息是如何通過(guò)消息過(guò)濾器的。但是,請(qǐng)注意,這是不是解決之前問(wèn)題的正確方法。 我們?cè)谏弦黄恼轮姓f(shuō)明了正確的解決方法。我用錯(cuò)誤的方式來(lái)說(shuō)明消息過(guò)濾器,主要是因?yàn)樗鼪](méi)有被開(kāi)發(fā)人員很好地理解。 (例如,消息過(guò)濾器的正當(dāng)理由是,阻止菜單循環(huán)看到某些輸入消息。)

從上一個(gè)程序開(kāi)始,在我們將 PostThreadMessage 更改為 PostMessage 之前,然后進(jìn)行以下更改:

在這里,我們?cè)诰€(xiàn)程上安裝了一個(gè)消息過(guò)濾器鉤子,以便我們可以在消息通過(guò)模態(tài)循環(huán)時(shí)顯示它們。 code 參數(shù)告訴我們什么類(lèi)型的模態(tài)循環(huán)檢索到了消息; 我們?cè)谶@里忽略它,因?yàn)槲覀兿雽?duì)所有模態(tài)循環(huán)進(jìn)行過(guò)濾。

運(yùn)行這個(gè)程序并觀察蜂鳴器聲不再丟失,因?yàn)槲覀兊南⑦^(guò)濾器有機(jī)會(huì)看到它們并對(duì)它們做出反應(yīng)。

消息過(guò)濾器技巧依賴(lài)于所有模態(tài)循環(huán),它們?cè)诜职l(fā)它們之前,通過(guò)消息過(guò)濾器發(fā)送它們檢索到的消息。 如果你正在編寫(xiě)要進(jìn)入庫(kù)的代碼,并且你有一個(gè)模態(tài)循環(huán),那么你也應(yīng)該在分發(fā)消息之前調(diào)用消息過(guò)濾器,以防你的代碼庫(kù)的使用者想要對(duì)消息做一些事情。

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

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

你可能會(huì)問(wèn)一個(gè)問(wèn)題,“為什么使用消息過(guò)濾器掛鉤而不是 GetMessage 掛鉤?”

消息過(guò)濾器鉤子比 GetMessage 鉤子占用資源更少,因?yàn)樗鼈儍H在請(qǐng)求時(shí)調(diào)用,與 GetMessage 鉤子相反,GetMessage 鉤子為每個(gè)檢索到的消息調(diào)用。 消息過(guò)濾器鉤子還會(huì)告訴你哪個(gè)模態(tài)循環(huán)正在執(zhí)行過(guò)濾,這樣就可以調(diào)整相應(yīng)的動(dòng)作。

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

總結(jié)

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

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2009-09-25 15:19:44

Hibernate過(guò)濾

2021-07-05 15:22:03

Servlet過(guò)濾器客戶(hù)端

2024-01-05 09:04:35

隆過(guò)濾器數(shù)據(jù)結(jié)構(gòu)哈希函數(shù)

2009-07-08 17:33:37

Servlet過(guò)濾器

2009-06-18 10:13:00

Hibernate過(guò)濾

2009-07-08 15:30:56

Servlet過(guò)濾器

2009-07-14 09:09:08

Swing模型過(guò)濾器

2009-07-08 16:07:04

Servlet過(guò)濾器配

2009-09-29 13:55:23

Hibernate設(shè)置

2011-06-29 16:14:59

Qt 事件 過(guò)濾器

2024-11-04 08:45:48

布隆過(guò)濾器元數(shù)據(jù)指紋值

2016-12-07 09:56:13

JavaFilter過(guò)濾器

2020-10-29 07:16:26

布隆過(guò)濾器場(chǎng)景

2017-07-18 14:10:31

大數(shù)據(jù)Apache Flum過(guò)濾器

2025-04-21 00:50:50

2009-07-03 18:26:11

Servlet過(guò)濾器

2017-04-12 14:43:01

Spring ClouZuul過(guò)濾器

2022-03-31 08:26:44

RocketMQ消息排查

2023-01-26 01:41:27

核心全局過(guò)濾器

2024-03-15 11:21:22

布隆過(guò)濾器數(shù)據(jù)庫(kù)數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲一区二区三区四区五区中文 | 欧美久久久久久久久中文字幕 | 亚洲一区二区三区观看 | 日韩有码一区二区三区 | 红桃视频一区二区三区免费 | 欧洲精品视频一区 | 韩国精品在线观看 | 亚洲视频一区二区三区四区 | 香蕉久久久久久 | 男人的天堂亚洲 | 亚洲在线一区二区三区 | 蜜桃视频在线观看免费视频网站www | 日韩精品视频一区二区三区 | 91pron在线| 国产欧美久久精品 | 在线午夜 | 97av在线| 夫妻午夜影院 | 中文字幕亚洲一区二区三区 | 欧美一区二区三区 | 欧美性成人| 一区二区三区高清不卡 | 欧美一区免费 | 亚洲精品久久久久久久不卡四虎 | 天天干天天干 | 天天操操操操操 | 欧美日韩精品专区 | 自拍视频国产 | 久久久人成影片免费观看 | 国产激情一区二区三区 | 在线观看中文字幕一区二区 | 国产精品久久久久一区二区三区 | 精品伊人久久 | 天天精品在线 | 国产成人精品久久 | 久久免费看 | 久久久久久中文字幕 | 这里只有精品99re | 91精品国产综合久久久动漫日韩 | 色.com| 亚洲精品久久久久久一区二区 |