Mensagem de pintura do WM _

A mensagem de _ pintura do WM é enviada quando o sistema ou outro aplicativo faz uma solicitação para pintar uma parte da janela de um aplicativo. A mensagem é enviada quando a função UpdateWindow ou RedrawWindow é chamada ou pela função DispatchMessage quando o aplicativo obtém uma mensagem de _ pintura do WM usando a função GetMessage ou PeekMessage .

Uma janela recebe essa mensagem por meio de sua função WindowProc .

LRESULT CALLBACK WindowProc(
  HWND hwnd, 
  UINT  uMsg, 
  WPARAM wParam, 
  LPARAM lParam     
);

Parâmetros

wParam

Este parâmetro não é usado.

lParam

Este parâmetro não é usado.

Retornar valor

Um aplicativo retornará zero se ele processar essa mensagem.

Exemplo

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);

            // All painting occurs here, between BeginPaint and EndPaint.
            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
            EndPaint(hwnd, &ps);
        }
        return 0;
    }

    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}

Exemplo de exemplos clássicos do Windows no github.

Comentários

A mensagem de _ pintura do WM é gerada pelo sistema e não deve ser enviada por um aplicativo. Para forçar uma janela a desenhar em um contexto de dispositivo específico, use a mensagem do WM _ Print ou WM _ fileclient . Observe que isso requer que a janela de destino dê suporte à mensagem do WM _ fileclient . Os controles mais comuns dão suporte à mensagem do WM _ fileclient .

A função DefWindowProc valida a região de atualização. A função também pode enviar a mensagem do WM _ NCPAINT para o procedimento de janela se o quadro da janela deve ser pintado e enviar a mensagem do WM _ ERASEBKGND se o plano de fundo da janela precisar ser apagado.

O sistema envia essa mensagem quando não há nenhuma outra mensagem na fila de mensagens do aplicativo. DispatchMessage determina para onde enviar a mensagem; GetMessage determina qual mensagem deve ser expedida. GetMessage retorna a mensagem de _ pintura do WM quando não há nenhuma outra mensagem na fila de mensagens do aplicativo e DispatchMessage envia a mensagem para o procedimento de janela apropriado.

Uma janela pode receber mensagens de pintura internas como resultado da chamada de RedrawWindow com o _ sinalizador RDW INTERNALPAINT definido. Nesse caso, a janela pode não ter uma região de atualização. Um aplicativo pode chamar a função GetUpdateRect para determinar se a janela tem uma região de atualização. Se GetUpdateRect retornar zero, o aplicativo não precisará chamar as funções BeginPaint e endpaintt .

Um aplicativo deve verificar se há qualquer pintura interna necessária examinando suas estruturas de dados internas para cada mensagem de _ pintura do WM , pois uma mensagem de _ pintura do WM pode ter sido causada por uma região de atualização não nula e uma chamada para RedrawWindow com o _ sinalizador RDW INTERNALPAINT definido.

O sistema envia uma mensagem de _ pintura do WM interno apenas uma vez. Depois que uma mensagem de _ pintura do WM interno for retornada de GetMessage ou PeekMessage ou for enviada para uma janela pelo UpdateWindow, o sistema não publicará nem enviará mais mensagens de _ pintura do WM até que a janela seja invalidada ou até que RedrawWindow seja chamado novamente com o _ sinalizador RDW INTERNALPAINT definido.

Para alguns controles comuns, o processamento de mensagem padrão do WM _ Paint verifica o parâmetro wParam . Se wParam for não nulo, o controle assumirá que o valor é um hDC e pinta usando esse contexto de dispositivo.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
WinUser. h (incluir Windows. h)

Confira também

Visão geral de pintura e desenho

Pintura e desenho de mensagens

BeginPaint

DefWindowProc

DispatchMessage

EndPaint

GetMessage

GetUpdateRect

PeekMessage

RedrawWindow

UpdateWindow

ERASEBKGND do WM _

NCPAINT do WM _

impressão do WM _

WM _ FILEclient