Microsoft的一个关于DirectX3D的BUG

在Windows2000和XP系统中,通过调用USER32.DLL中的SetLayeredWindowAttributes API设置窗口透明度会导致DirectX3D LAYERED窗口出现闪烁现象。本文介绍了解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Windows2000和XP中可以通过调用USER32.DLL中的SetLayeredWindowAttributes这个API来设置窗口的透明度,但也给DirectX3D带来了一个BUG,就是LAYERED窗口闪烁的问题。
你使用Windows的API:CreateWindowEx或SetWindowLong来设置窗口的WS_EX_LAYERED样式,这个时候调用上面的API来设置窗口的透明度为1-100%。然后你使用DirectX3D在这个窗口的表面上绘图,这个时候你会发现窗口会闪烁不停。
但如果你去掉窗口的WX_EXLAYERED属性,D3D绘图就不会闪烁。

据说这是Microsoft的一个BUG,参见相关引用: http://www.kbalertz.com/kbNamed_899290/899290.aspx.
该连接是说让让一个窗口覆盖住它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值