Делаю свой контрол, похожий на RichEdit. При вертикальном скроллинге текст мерцает. Однако на в Edit'e, ни в RichEdit'e такого не наблюдается.
А как ты переирисовываешь? WM_PAINT? Я тут недавно обнаружил что Код (Text): ValidateRect(hWnd, NULL); hDC = GetDC(hWnd); ... ReleaseDC(hWnd, hDC); работает быстрее чем BeginPaint и EndPaint А ты используешь ScrollWindow, ScrollDC и другие?
Обрабатываю WM_PAINT. ScrollWindow, ScrollDC не использую. Зачем? Я в обработчике WM_PAINT вывожу только видимые строки. В структуре связанной с классом у меня есть поле YOffset, оно задает номер строки с которой выводить текст. И в WM_VSCROLL я изменяю это поле.
0. Регистрируя класс окна поставить NULL для hbrBackground 1. На WM_ERASEBKGND ответить "return TRUE" 2. Рисовать все строки в памяти, а затем BitBlt() на HDC из BeginPaint().
CnCVK Конечно, если не задавать клиппинг валидного региона, то dc получается немного быстрее, но мерцать от этого меньше не будет. Клиппинг - штука полезная (если использовать правильно) и зря Вы от неё отказываетесь. n0name Рисовать не прямо в dc, который вернул BeginPaint/GetDC, а сначала в compatible dc. Когда всё уже будет отрисовано в этот совместимый dc в памяти, вызывать BitBlt на экранный dc. См. в msdn секцию painting and drawing.