如何停止MFC/win32控件重新绘制

Mr.*_*Boy 2 winapi mfc repaint cricheditctrl

我有一个CRichEditCtrl,一个算法在其内容上就地工作,迭代内容并进行更改.这似乎导致它每次重新绘制,这会导致闪烁和明显的时间来完成操作,特别是如果控件开始滚动.我想知道是否有一种巧妙的方法可以阻止它重新粉刷一段时间.它实际上是一个使用CRichEditCtrl的自定义子类,所以我想的是:

void MyCustomEditCtrl::DoAlgorithm()
{
 enableRepaint(false);
 ...
 //to the actual work
 ...
 enableRepaint(true);
}
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法?一个自定义的on-paint处理程序,在进行操作时什么都不做?或者重新粉刷实际上是禁用?

Goz*_*Goz 5

我从来没有使用过该函数,但看起来你想看看CWnd :: SetRedraw.