首页 新闻 赞助 找找看

Win32 API (BitBlt) 通过句柄获取图像在XP系统下不正常

0
悬赏园豆:20 [已解决问题] 解决于 2010-11-02 14:20
<table class="mtxt" cellspacing="0" cellpadding="0"> <tbody> <tr> <td id="body"><!-- google_ad_section_start --> <div class="msgfont">用的是BitBlt。在win7下,句柄的窗口被盖住,同样能正常获取到界面的完整图像而不被挡住。但是在Xp下如果被挡住,获取到的图像里会包含另外对象的窗口。<br />请问:这是怎么回事呢?难道这两个系统对窗口的处理方式不一样?有什么办法解决呢?<br />用另外的API也行,已有数据:对象的句柄。</div> <!-- google_ad_section_end --><!--End_body//--></td> </tr> <tr> <td><br /></td> </tr> <tr> <td><br /></td> </tr> </tbody> </table>
烈火★寒冰的主页 烈火★寒冰 | 菜鸟二级 | 园豆:210
提问于:2010-10-20 17:55
< >
分享
最佳答案
0

因为vista以后桌面绘制的机制改变了,为了追求半透明效果,所有窗口都是“全显示状态”,没有什么InvalidateRect的无效矩形的概念了,窗口先绘制到系统的代理画布上,然后系统再合成最终显示效果。所以你在vista以后的系统用HDC能截取所有显示内容(即使被覆盖)。但是在XP下面是有无效矩形的概念的。所以你用那个HDC只能拿到当时显示在屏幕上的内容,被覆盖的部分是得不到的。

收获园豆:20
hoodlum1980 | 小虾三级 |园豆:559 | 2010-10-30 23:05
很感谢大侠的解惑。那是不是意味着,在XP下,如果界面被挡住,而且不主动前置的话,是取不到跟没有被挡住时一样的图像了?还有什么办法么?
烈火★寒冰 | 园豆:210 (菜鸟二级) | 2010-10-31 19:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册