SetLayeredWindowAttributes无法在Windows 7上运行

时间:2010-10-19 09:31:54

标签: c++ winapi windows-7 transparency

我正在使用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中的颜色值不匹配?

1 个答案:

答案 0 :(得分:2)

你应该避免在LWA_COLORKEY中使用0xff,0xff,0xff(白色)。任何其他值都应该没问题(例如0xff,0xff,0xfe)。

为了更好地控制分层窗口,我建议您考虑使用UpdateLayeredWindowIndirect。我写了一篇文章,详细描述了它如何与GDI和Direct2D一起使用。

http://msdn.microsoft.com/en-us/magazine/ee819134.aspx