Fondo de la ventana
El fondo de la ventana es el color o patrón que se usa para rellenar el área cliente antes de que una ventana comience a dibujar. El fondo de la ventana cubre lo que estaba en la pantalla antes de que la ventana se moviera allí, borrando las imágenes existentes e impide que la nueva salida de la aplicación se mezcle con información no relacionada.
El sistema pinta el fondo de una ventana o proporciona a la ventana la oportunidad de hacerlo enviando un mensaje de WM_ERASEBKGND cuando la aplicación llama a BeginPaint. Si una aplicación no procesa el mensaje pero lo pasa a DefWindowProc, el sistema borra el fondo rellenando con el patrón en el pincel de fondo especificado por la clase de la ventana. Si el pincel no es válido o la clase no tiene pincel en segundo plano, el sistema establece el miembro fErase en la estructura PAINTSTRUCT que Devuelve BeginPaint , pero no realiza ninguna otra acción. A continuación, la aplicación tiene una segunda oportunidad para dibujar el fondo de la ventana, si es necesario.
Si procesa WM_ERASEBKGND, la aplicación debe usar el parámetro wParam del mensaje para dibujar el fondo. Este parámetro contiene un identificador para el contexto del dispositivo para mostrar de la ventana. Después de dibujar el fondo, la aplicación debe devolver un valor distinto de cero. Esto garantiza que BeginPaint no establezca erróneamente el miembro fErase de la estructura PAINTSTRUCT en un valor distinto de cero (lo que indica que se debe borrar el fondo) cuando la aplicación procesa el mensaje WM_PAINT posterior.
Una aplicación puede definir un pincel de fondo de clase asignando un identificador de pincel o un valor de color del sistema al miembro hbrBackground de la estructura WNDCLASS al registrar la clase con la función RegisterClass . La función GetStockObject o CreateSolidBrush se puede usar para crear un identificador de pincel. Un valor de color del sistema puede ser uno de los definidos para la función SetSysColors . (El valor debe aumentarse en uno antes de asignarlo al miembro).
Una aplicación puede procesar el mensaje de WM_ERASEBKGND aunque se haya definido un pincel en segundo plano de clase. Esto es típico en las aplicaciones que permiten al usuario cambiar el color de fondo de la ventana o el patrón de una ventana especificada sin afectar a otras ventanas de la clase . En tales casos, la aplicación no debe pasar el mensaje a DefWindowProc.
No es necesario que una aplicación alinee pinceles, ya que el sistema dibuja el pincel utilizando el origen de la ventana como punto de referencia. Dado esto, el usuario puede mover la ventana sin afectar a la alineación de pinceles de patrón.