注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

VC:频繁调用GDI的BitBlt函数,导致光标闪烁、电脑卡顿(CAPTUREBLT)  

2013-04-26 09:33:03|  分类: vc界面编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

VC:频繁调用GDI的BitBlt函数,导致光标闪烁、电脑卡顿(CAPTUREBLT)

 

频繁调用BitBlt函数时,最后一个参数加上了CAPTUREBLT特性,光标闪烁频繁,操作系统是win7 x64。根据MSDN的解释:

Windows 98/Me, Windows 2000/XP: Includes any windows that are layered on top of your window in the resulting image. By default, the image only contains your window. Note that this generally cannot be used for printing device contexts.

看起来这个flag值只对xp以下的系统有效?意为:对分层窗口进行绘制。缺省状态下,BitBlt的DC是不绘制上层窗口的;使用了这个flag,BitBlt会绘制顶层窗口(覆盖当前窗口的窗口)的内容。

 

显然,这个性能就比较低下了。假设我们自己实现,我们得判断DC是哪个窗口的,然后枚举窗口的上一层窗口,然后取他们的DC,绘制到我们的目标DC中,这个过程比较复杂了,计算量很大。那么,这个过程可能导致鼠标光标切换到繁忙状态,导致光标闪烁;也不排除系统API修改了光标状态?

 

个人建议,不要使用这个特性。如果非得绘制其上层的窗口,完全可以取桌面的DC,因为所有窗口都是桌面窗口的子窗口。

 

By:zhanyonhu

  评论这张
 
阅读(1452)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016