Fang0x378 发表于 2021-3-31 09:28:47

希望官方出一个拦截消息的例子

本帖最后由 Fang0x378 于 2021-5-11 21:24 编辑

除了窗口组件有消息过滤功能外,其他组件都没有消息过滤功能。其他组件怎么实现呢?

大神能给点提示吗?
按照窗口类库的方法好像不行呐。




飞扬工作室 发表于 2021-3-31 09:37:30

很简单啊,直接覆盖对应虚拟方法就行了,在拦截方法中所有下属窗口组件的消息都会过来,根据窗口句柄判断一下就行了.



Fang0x378 发表于 2021-3-31 09:53:16

飞扬工作室 发表于 2021-3-31 09:37
很简单啊,直接覆盖对应虚拟方法就行了,在拦截方法中所有下属窗口组件的消息都会过来,根据窗口句柄判断一下 ...

谢谢吴总的回复。
好像真的可以了,原来没有注意到所有消息都会过滤

创世魂 发表于 2021-3-31 09:58:42

像添加事件一样,把这个消息过滤添加了,就可以通过这个虚拟方法里面的窗口句柄参数进行组件过滤。

Fang0x378 发表于 2021-3-31 10:11:29

创世魂 发表于 2021-3-31 09:58
像添加事件一样,把这个消息过滤添加了,就可以通过这个虚拟方法里面的窗口句柄参数进行组件过滤。 ...

嗯嗯,这个我知道的。
我原来是想在子组件的类里面实现,想用嵌入式的方法实现。
现在貌似不用那么复杂

飞扬工作室 发表于 2021-3-31 10:49:01

Fang0x378 发表于 2021-3-31 10:11
嗯嗯,这个我知道的。
我原来是想在子组件的类里面实现,想用嵌入式的方法实现。
现在貌似不用那么复杂 ...

请下载覆盖类库中的此文件:



增加了此事件,直接使用即可:


Fang0x378 发表于 2021-3-31 10:55:51

本帖最后由 Fang0x378 于 2021-3-31 11:29 编辑

飞扬工作室 发表于 2021-3-31 10:49
请下载覆盖类库中的此文件:



吴总太给力了,马上修改了类库!

fengshangren 发表于 2021-3-31 11:01:08

飞扬工作室 发表于 2021-3-31 10:49
请下载覆盖类库中的此文件:




这个自带的消息过滤,为什么 SendMessage发送的消息,是接受不到的,有时候还要自己子类化 才行

飞扬工作室 发表于 2021-3-31 11:11:25

fengshangren 发表于 2021-3-31 11:01
这个自带的消息过滤,为什么 SendMessage发送的消息,是接受不到的,有时候还要自己子类化 才行 ...
这个是可以接收到的,我同时覆盖了WindowProc

Fang0x378 发表于 2021-3-31 11:18:42

已经成功截获到组件鼠标离开(WM_MOUSELEAVE)消息,有了这个功能,自绘组件就方便很多了。


页: [1] 2
查看完整版本: 希望官方出一个拦截消息的例子