WS_EX_LAYERED colorkey - Vista问题

时间:2009-12-11 13:07:08

标签: winapi windows-vista transparent

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

这适用于 XP和没有Aero的Vista 。但是,在 Vista with Aero 点击时,不会通过透明区域。我们能做什么?

使用WS_EX_TRANSPARENT失败,当然它使我们自己的控件无法运行。

我考虑过隐藏父窗口(WS_SHOWWINDOW),但我相当肯定会隐藏所有孩子,并且AFAIK将窗口调整到最小尺寸,使用CLIPCHILDREN&amp ;; CLIPSIBLINGS会以类似的方式失败......

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  • WS_EX_LAYERED处理图形窗口透明度,点击仅仅是一种副作用,恰好适用于较旧的Windows操作系统。
  • WS_EX_TRANSPARENT是鼠标 透明的原因。使用此标志,图形透明度无法保证。您必须手动绘制控件(使用GDI函数)(如在directX应用程序中)并使用低级别钩子捕获光标位置。