Как остановить перерисовку элемента управления MFC / win32 - PullRequest
2 голосов
/ 05 мая 2010

У меня есть CRichEditCtrl, и алгоритм работает с его содержимым на месте, перебирает содержимое и вносит изменения. Кажется, что это вызывает повторную окраску каждый раз, что вызывает мерцание и заметное время для завершения операции, особенно если элемент управления начинает прокручиваться. Я задавался вопросом, есть ли для меня аккуратный способ остановить его перекраску на какое-то время. На самом деле это пользовательский подкласс CRichEditCtrl, поэтому я подумал что-то вроде:

void MyCustomEditCtrl::DoAlgorithm()
{
 enableRepaint(false);
 ...
 //to the actual work
 ...
 enableRepaint(true);
}

Какой самый подходящий подход? Пользовательский обработчик краски, который ничего не делает во время выполнения операции? Или перекрашивание может быть отключено?

1 Ответ

5 голосов
/ 05 мая 2010

Я никогда не использовал эту функцию, но похоже, что вы хотите посмотреть на CWnd :: SetRedraw .

...