在我的项目中,我创建了一个表单,用户可以控制其透明度。如果表单完全透明,鼠标事件会“穿透”(无需我的干预);否则,我的表单会处理它们。
在阅读这个问题并重写CreateParams属性以在我的表单上设置WS_EX_TRANSPARENT标志后,现在允许鼠标事件在不透明时穿透,而任何值小于255的透明度都可以。
这正是我想要的,但我担心我不理解它为什么起作用。
据我所读,WS_EX_TRANSPARENT的目的是通过从其下面的窗体中“窃取位”来使窗体看起来透明,因此:
1. 我的表单及其中所有控件的Paint方法应该从未被调用过,对吗?因为WS_EX_TRANSPARENT应该导致Windows覆盖它们,那么为什么它会影响输入处理而不是我的表单的绘制?
2. 透明度对鼠标事件的处理应该没有影响,因为如果Paint被覆盖,“本地”透明度就不重要了,对吗?
能有人解释一下,这个标志到底是做什么的?它是如何工作的?
在阅读这个问题并重写CreateParams属性以在我的表单上设置WS_EX_TRANSPARENT标志后,现在允许鼠标事件在不透明时穿透,而任何值小于255的透明度都可以。
这正是我想要的,但我担心我不理解它为什么起作用。
据我所读,WS_EX_TRANSPARENT的目的是通过从其下面的窗体中“窃取位”来使窗体看起来透明,因此:
1. 我的表单及其中所有控件的Paint方法应该从未被调用过,对吗?因为WS_EX_TRANSPARENT应该导致Windows覆盖它们,那么为什么它会影响输入处理而不是我的表单的绘制?
2. 透明度对鼠标事件的处理应该没有影响,因为如果Paint被覆盖,“本地”透明度就不重要了,对吗?
能有人解释一下,这个标志到底是做什么的?它是如何工作的?