Tengo un cuadro de diálogo que cambia de tamaño. También tiene un fondo personalizado que pinto en respuesta a una llamada WM_ERASEBKGND (actualmente una simple llamada a FillSolidRect).Cómo evitar el parpadeo al manejar WM_ERASEBKGND en el cuadro de diálogo de Windows
Cuando se cambia el tamaño del cuadro de diálogo, se produce un enorme parpadeo. Para intentar reducir el parpadeo, enumero todas las ventanas secundarias y las agrego a la región de recorte. Eso parece ayudar un poco, ahora el parpadeo es más evidente en todos los controles de niños mientras repintan.
¿Cómo puedo hacer que el cuadro de diálogo no parpadee durante el cambio de tamaño? Sospecho que el doble almacenamiento debe jugar un papel, pero no estoy seguro de cómo hacer eso con un diálogo con controles secundarios (sin hacer que todos los controles secundarios sean dibujados por el propietario o algo así).
Debo señalar que estoy usando C++ (no NET), y MFC, aunque las soluciones basadas en Win32 puros son bienvenidos :)
NOTA: Una cosa he intentado pero que no funcionó (no seguro por qué) fue:
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.FillSolidRect(rect, backgroundColor);
pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);