Invalidate导致异常闪烁

我这边在写MFC程序的时候,发现问题:某个窗口弹出时/操作时,背景下的其它窗口也进行了闪烁

 

问题定位:经过代码分段隔离检查,查到的原因是

Invalidate()的使用导致的

 

问题分析:推测如下

通常情况下,调用invalidate刷新的应该是窗体本身,可是,当窗口尚未建立完全的时候,调用invalidate,刷新的区域可能变成了整个屏幕窗口。

从而导致背景下的其它窗口也闪烁了。

 

结论:后续使用invalidate时,要避免窗口未创建成功前调用。另外invalidate一定程度的慎用。

建议:可以在使用invalidate前,添加窗口已创建的判断 if (IsWindow(....) )

 

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu  转载请标明来源 

 

你可能感兴趣的:(invalidate,屏幕闪烁,窗口闪烁)