3

我们将透明的应用程序窗口放在另一个进程的窗口上。我们的窗口包含一些子控件。我们创建一个 WS_EX_LAYERED 窗口,使用 colorkey 进行选择性透明度。主窗口是完全透明的,所以它只作为子控件的容器。

这在没有 Aero 的 XP 和 Vista上运行良好。但是,在带有 Aero 的 Vista 上,点击不会穿过透明区域。我们能做些什么?

使用 WS_EX_TRANSPARENT 失败了,这当然会使我们自己的控件无法操作。

我曾考虑隐藏父窗口(WS_SHOWWINDOW),但我相当肯定这将隐藏所有子窗口,并且 AFAIK 将窗口大小调整为最小尺寸,任何 CLIPCHILDREN 和 CLIPSIBLINGS 的组合都会以类似的方式失败......

谢谢你的帮助。

4

2 回答 2

2

另一种选择是使用窗口区域而不是WS_EX_LAYERED

于 2009-12-11T13:26:41.500 回答
0
  • WS_EX_LAYERED 用于处理图形窗口透明度,点击只是在较旧的 Windows 操作系统上发生的副作用。
  • WS_EX_TRANSPARENT 使鼠标变得 透明。此标志不能保证图形透明度。您必须手动绘制控件(使用 GDI 函数)(如在 directX 应用程序中)并使用低级挂钩捕获光标位置。
于 2011-05-02T23:31:12.597 回答