SetLayeredWindowAttributes 在 Windows 7 上不起作用
我正在使用 SetLayeredWindowAttributer 使分层窗口的特定颜色透明。
这在 Windows XP、VISTA 上运行良好。但当我在 Windows 7 上使用相同的方法时,它不起作用。
SetLayeredWindowAttributes(hWnd, RGB(0xff,0xff,0xff), 0, LWA_COLORKEY);
当我使用 LWA_ALPHA 时,它也可以工作。 问题是我无法在 Windows 7 中使特定颜色透明。
以下语句适用于 Windows 7
SetLayeredWindowAttributes(hWnd,RGB(0xff,0xff,0xff), 100, LWA_ALPHA);
渲染的颜色值是否可能与 SetLayeredWindowAttributes 中的颜色值不匹配?
I am using SetLayeredWindowAttributer to make a particular color of layered window transparent.
This works fine on Windows XP,VISTA . But when I use the same on Windows 7 its not working.
SetLayeredWindowAttributes(hWnd, RGB(0xff,0xff,0xff), 0, LWA_COLORKEY);
When I use LWA_ALPHA then also it works.
Problem is that I am not able to make a particular color transparent in Windows 7.
The following statement works on Windows 7
SetLayeredWindowAttributes(hWnd,RGB(0xff,0xff,0xff), 100, LWA_ALPHA);
Is it possible that the rendered color values not matching the color value in SetLayeredWindowAttributes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该避免将 0xff、0xff、0xff(白色)与 LWA_COLORKEY 一起使用。任何其他值都应该没问题(例如0xff、0xff、0xfe)。
为了更好地控制分层窗口,我建议您考虑使用 UpdateLayeredWindowIndirect。我写了一篇文章,详细描述了如何将它与 GDI 和 Direct2D 一起使用。
http://msdn.microsoft.com/en-us/magazine/ee819134.aspx
You should avoid using 0xff,0xff,0xff (white) with LWA_COLORKEY. Any other value should be fine (e.g. 0xff,0xff,0xfe).
For more control over your layered window I suggest you consider using UpdateLayeredWindowIndirect. I wrote an article that describes in detail how it can be used with both GDI and Direct2D.
http://msdn.microsoft.com/en-us/magazine/ee819134.aspx