SetLayeredWindowAttributes在Windows 7上无法工作。

3
我正在使用SetLayeredWindowAttributes函数来使分层窗口中的特定颜色透明。
在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个回答

2
请避免在LWA_COLORKEY中使用0xff、0xff、0xff(白色),其他值应该是可以的(例如0xff、0xff、0xfe)。
为了更好地控制您的分层窗口,建议考虑使用UpdateLayeredWindowIndirect。我写了一篇文章详细描述如何在GDI和Direct2D中使用它。 http://msdn.microsoft.com/en-us/magazine/ee819134.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接