gpt4 book ai didi

c# - WS_EX_TRANSPARENT - 它实际上做了什么?

转载 作者:行者123 更新时间:2023-11-30 15:07:54 26 4
gpt4 key购买 nike

在我的项目中,我创建了一个由用户控制不透明度的表单。如果表单是完全透明的,鼠标事件就会“失败”(没有我的干预),否则我的表单会处理它们。

看完this question并覆盖 CreateParams 属性以在我的表单上设置 WS_EX_TRANSPARENT 标志,它现在允许鼠标事件在不透明度为 <255 的任何值时通过。

这正是我想要的,但让我担心的是我不明白它为什么有效。

根据我的阅读,WS_EX_TRANSPARENT 旨在通过在其 Paint 方法中从其下方的表单“窃取位”来使表单看起来透明,因此:

  1. 我的窗体的 Paint 方法和其中的所有控件都不应该被调用,对吧?由于 WS_EX_TRANSPARENT 应该导致 Windows 覆盖它们,那么为什么它影响输入处理而不影响我的表单绘制?

  2. 不透明度应该对鼠标事件的处理没有影响,就好像 Paint 被覆盖一样“本地”不透明度应该无关紧要,不是吗?

谁能解释一下,这个标志真正的作用是什么?它是如何工作的?

最佳答案

WS_EX_TRANSPARENT 使您的事件(如鼠标点击)从您的窗口中掉落,等等。不透明度是一个单独的概念,它指示窗口管理器在绘制表单时应用 alphablending。这两件事没有关系,但是当你把它们结合起来时,你会得到你需要的效果。

所以:

  1. 您的表单的 Paint 方法被正常调用,不透明度与它无关。

  2. 不透明度与鼠标事件没有任何关系,如第一段所述。

关于c# - WS_EX_TRANSPARENT - 它实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com