SetLayeredWindowAttributes函数在XP系统上的SP2与SP3版之间的差异性有关问题

SetLayeredWindowAttributes函数在XP系统上的SP2与SP3版之间的差异性问题
BOOL SetLayeredWindowAttributes(
hwnd,
COLORREF crKey,
BYTE bAlpha,
DWORD dwFlags
);
当dwFlags==LWA_COLORKEY时,表示窗口中颜色值为crKey的地方会镂空。
今天发现XP的SP2版和SP3版对于这一点,表现情况居然不同~~
比如我把crKey设置为RGB(255,255,255),也就是白色。
这个时候打开一张位图(为简便起见,只测试位图,且用GDI装载位图)。
结果SP2下表现“正常”:所有白色的地方都镂空了;
而SP3却“不正常”了:当位图不是32位时,白色的地方依旧可以镂空,
但当位图是32位时,单个像素的alpha值能够决定该点镂空与否。
这到影响不是很大,但是当我用GDI+时,不管是不是32位的位图,
和若是32位的位图时,不管单个像素的alpha值是多少,白色的地方都不会镂空~~
而SP2上GDI+则可以~~~
大家可以试试这个情况~~顺便散分~~
虽然后来用三缓存,并用TransparentBlt函数解决了这个差异性的问题。

------解决方案--------------------
接分,顺便请牛人解释现象。
------解决方案--------------------
mark 坐等等牛人出现
------解决方案--------------------
如果跟OS SP有关,可以给MSDN 提交bug的.. :)
------解决方案--------------------
ding------
------解决方案--------------------
接分,坐等下一个牛人出现
------解决方案--------------------
我有一个layered窗口, GDI+画一个昆虫(32bit, png),边界不规则, XP SP3没LZ的问题. 


=======================================================
FreeLaxy, your backup.
=======================================================

------解决方案--------------------

------解决方案--------------------
接分~~关注~~
------解决方案--------------------
SetLayeredWindowAttributes这个函数,或者更准确的说Layer Window,微软有很多问题的。所以,现在我一般用Rgn来做透明和不规则窗口,而不是用分层窗口。关于分层窗口的其它问题,我再补充一些:
1. 与QQ和MSN的截屏键可能不兼容
2. 窗口拉伸时,可能有黑块
3. 在一些视频窗口上时,可能会闪烁或黑块。
所以分层窗口出现的任何问题, 我都不再惊讶。现在能做的就是:
1.不用分层窗口
2.如果要用的话,多在各系统下测试、甚至要在不同的桌面主题下测试。有些问题是不可能解决的,只能绕开。
------解决方案--------------------
接分~~关注~~