【发布时间】:2011-09-04 03:23:21
【问题描述】:
在我的项目中,我创建了一个不透明度由用户控制的表单。如果表单是完全透明的,鼠标事件就会“消失”(没有我的干预),否则我的表单会处理它们。
在阅读this question 并覆盖 CreateParams 属性以在我的表单上设置 WS_EX_TRANSPARENT 标志后,它现在允许鼠标事件在不透明度为
这正是我想要的,但让我担心的是我不明白它为什么会起作用。
根据我的阅读,WS_EX_TRANSPARENT 旨在通过在其 Paint 方法中从其下方的表单中“窃取位”来使表单看起来透明,因此:
我的表单的 Paint 方法和其中的所有控件都不应该被调用,对吗?由于 WS_EX_TRANSPARENT 应该导致 Windows 覆盖它们,那么为什么它会影响输入处理而不影响我的表单的绘制?
不透明度应该对鼠标事件的处理没有影响,就像 Paint 被覆盖一样,“本地”不透明度应该无关紧要,不是吗?
谁能解释一下,这个标志真的是做什么的?它是如何工作的?
【问题讨论】:
标签: c# winforms winapi forms flags