【发布时间】:2012-06-18 06:39:23
【问题描述】:
我遇到了 MSDN 主题中提到的一个确切问题:DWM Blur Behind Overview。
在调用 DwmEnableBlurBehindWindow 之后,客户区变成了漂亮的玻璃,但不幸的是,控件(按钮、编辑、静态等)上的所有黑色文本也变得透明,就像 Topic on MSDN 一样。
有什么办法解决这个问题?
顺便说一句,我的开发环境是VC++ 6.0,我必须用DrawThemeTextEx API绘制一些发光的文字,所以我不能简单地使用DwmExtendFrameIntoClientArea。我必须使用 DwmEnableBlurBehindWindow 来启用客户区域的玻璃效果。
非常感谢!
2012/6/19 更新: 通过使用“SetLayeredWindowAttributes”将窗口的 TRANSPARENT KEY COLOR 更改为非黑色,然后使用“DwmExtendFrameIntoClientArea”可以解决玻璃窗口上的 CONTROLS(BUTTONs、EDITs 等)的标题文本问题。
但是这样一来,“DrawThemeTextEx”就不能正常工作了。看起来 DrawThemeTextEx 只能使用 RGB(0,0,0) 作为其透明键颜色。
那么,是否有任何 API 可以更改“DrawThemeTextEx”在内部使用的 TRANSPARENT KEY COLOR?
我的最终目标是在没有 MSDN 主题中提到的“DwmEnableBlurBehindWindow”副作用的玻璃(Aero)窗口上绘制一些发光文本:DWM Blur Behind Overview,http://msdn.microsoft.com/en-我们/图书馆/aa969537.aspx。 如果有其他方法可以做到这一点,我很高兴听到:)
非常感谢,再次! :)
【问题讨论】:
-
VC6与它无关,常用控件使用GDI,GDI不支持alpha通道...
-
我提到 VC6 的原因是我必须以动态方式使用 DWM API。而且整个 MSDEV 也没有 VS2008 或更高版本那么好用。
-
恕我直言,使用颜色键不是可行的方法,因为您需要选择一种颜色,该颜色不属于主题/VS 并且未在您可能拥有的任何图形/图标中使用...
-
是的,我选择了 TRANSPARENT KEY COLOR:RGB(200, 201, 202) 以使所有文本在 CONTROLS 上正确显示。但同时,“DrawThemeTextEx”也无法正常工作。而且我真的很累.....我的目标是让“DrawThemeTextEx”和“DwmExtendFrameIntoClientArea”同时工作正常。 :(
-
如果文本系统颜色是 RGB(200, 201, 202) ?