У меня есть диалог, который изменяет размер. Он также имеет собственный фон, который я рисую в ответ на вызов WM_ERASEBKGND (в настоящее время это простой вызов FillSolidRect).Как избежать мерцания при обработке WM_ERASEBKGND в диалоговом окне Windows
При изменении размера диалогового окна происходит огромное мерцание. Чтобы попытаться уменьшить мерцание, я перечисляю все дочерние окна и добавляю их в область отсечения. Кажется, это немного помогает - теперь мерцание в основном проявляется во всех дочерних элементах управления, когда они перекрашиваются.
Как я могу сделать диалог без мерцания при изменении размера? Я подозреваю, что двойная буферизация должна играть определенную роль, но я не уверен, как это сделать с диалогом с дочерними элементами управления (без создания всех дочерних элементов управления владельцем-рисованием или что-то в этом роде).
Я должен отметить, что я использую 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);