Tela de fundo da janela

A tela de fundo da janela é a cor ou padrão usado para preencher a área do cliente antes que uma janela comece a desenhar. A tela de fundo da janela cobre o que estava na tela antes da janela ser movida para lá, apagando as imagens existentes e impedindo que a nova saída do aplicativo seja misturada com informações não relacionadas.

O sistema pinta a tela de fundo de uma janela ou dá à janela a oportunidade de fazer isso enviando-lhe uma mensagem WM_ERASEBKGND quando o aplicativo chama BeginPaint. Se um aplicativo não processar a mensagem, mas a passar para DefWindowProc, o sistema apagará a tela de fundo preenchendo-a com o padrão no pincel de plano de fundo especificado pela classe da janela. Se o pincel não for válido ou a classe não tiver nenhum pincel de plano de fundo, o sistema definirá o membro fErase na estrutura PAINTSTRUCTretornada por BeginPaint , mas não executará nenhuma outra ação. Em seguida, o aplicativo tem uma segunda chance de desenhar o plano de fundo da janela, se necessário.

Se processar WM_ERASEBKGND, o aplicativo deverá usar o parâmetro wParam da mensagem para desenhar a tela de fundo. Esse parâmetro contém um identificador para o contexto do dispositivo de exibição da janela. Depois de desenhar a tela de fundo, o aplicativo deve retornar um valor diferente de zero. Isso garante que BeginPaint não defina erroneamente o membro fErase da estrutura PAINTSTRUCT como um valor diferente de zero (indicando que a tela de fundo deve ser apagada) quando o aplicativo processa a mensagem de WM_PAINT subsequente.

Um aplicativo pode definir um pincel de plano de fundo de classe atribuindo um identificador de pincel ou um valor de cor do sistema ao membro hbrBackground da estrutura WNDCLASS ao registrar a classe com a função RegisterClass . A função GetStockObject ou CreateSolidBrush pode ser usada para criar um identificador de pincel. Um valor de cor do sistema pode ser um daqueles definidos para a função SetSysColors . (O valor deve ser aumentado em um antes de ser atribuído ao membro.)

Um aplicativo pode processar a mensagem WM_ERASEBKGND mesmo que um pincel de plano de fundo de classe esteja definido. Isso é típico em aplicativos que permitem que o usuário altere a cor da tela de fundo da janela ou o padrão de uma janela especificada sem afetar outras janelas na classe . Nesses casos, o aplicativo não deve passar a mensagem para DefWindowProc.

Não é necessário que um aplicativo alinhe pincéis, pois o sistema desenha o pincel usando a origem da janela como ponto de referência. Considerando isso, o usuário pode mover a janela sem afetar o alinhamento dos pincéis de padrão.