У меня есть диалог, который изменяет размеры. Он также имеет собственный фон, который я рисую в ответ на вызов WM_ERASEBKGND (в настоящее время это простой вызов FillSolidRect).
Когда размер диалогового окна изменяется, происходит огромное мерцание. Чтобы попытаться уменьшить мерцание, я перечисляю все дочерние окна и добавляю их в область отсечения. Это, кажется, немного помогает - теперь мерцание в основном проявляется во всех дочерних элементах управления, когда они перекрашиваются.
Как сделать диалоговое окно без мерцания при изменении размера? Я подозреваю, что двойная буферизация должна сыграть свою роль, но я не уверен, как это сделать с помощью диалогового окна с дочерними элементами управления (без создания всех дочерних элементов управления-рисования владельцем или чего-то подобного).
Должен заметить, что я использую C ++ (не .NET) и MFC, хотя приветствуются чистые решения на основе Win32:)
ПРИМЕЧАНИЕ. Одна вещь, которую я попробовал, но которая не сработала (не знаю почему), была:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(rect, backgroundColor);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);