Compartilhar via


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. O plano de fundo da janela cobre o que estava na tela antes da janela ser movida para lá, apagando 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 fazê-lo 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 pincel de plano de fundo, o sistema definirá o membro fErase na estruturaPAINTSTRUCT que BeginPaint retorna, mas não executará nenhuma outra ação. Em seguida, o aplicativo tem uma segunda chance de desenhar a tela de fundo da janela, se necessário.

Se ele 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 estruturaPAINTSTRUCT como um valor diferente de zero (indicando que o plano de fundo deve ser apagado) quando o aplicativo processa a mensagem 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 hbrBackground membro da estruturaWNDCLASSao registrar a classe com a função RegisterClass. A função GetStockObject ou CreateSolidBrush pode ser usada para criar uma alça de pincel. Um valor de cor do sistema pode ser um dos definidos para a função SetSysColors. (O valor deve ser aumentado por 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 da 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 de pincéis de padrão.