不要在OnPaint()中使用Invalidate()来刷新窗口

我从CEdit类派生了一个子类CMyEidt,然后在CMyEidt::OnPaint()中绘图,并使用了Invalidate()来使编辑框进行重绘。但却导致CPU的占用率很高,并且,如何没有采用双缓冲机制,图片还会不停的闪烁。如下图

不要在OnPaint()中使用Invalidate()来刷新窗口_第1张图片




注释掉Invalidate()后CPU占用恢复正常:


不要在OnPaint()中使用Invalidate()来刷新窗口_第2张图片




但是我在主对话框中调用Invalidate()却不会导致CPU出现这种情况,这是为什么?


不要在OnPaint()中使用Invalidate()来刷新窗口_第3张图片


不知道为什么会这样。。

最好不要在OnPaint()中使用Invalidate()。Invalidate()会使用窗口发生重绘

不要在OnPaint()中进行一些会占用软多CPU资源的操作,如打开文件,可以把这些操作放到InitXX()中。


作者:http://blog.csdn.net/lp310018931

你可能感兴趣的:(MFC)