Partilhar via


WM_CTLCOLORSTATIC mensagem

Um controle estático ou um controle de edição que é somente leitura ou desabilitado envia a mensagem WM_CTLCOLORSTATIC para sua janela pai quando o controle está prestes a ser desenhado. Ao responder a essa mensagem, a janela pai pode usar o identificador de contexto do dispositivo especificado para definir as cores de primeiro plano e de plano de fundo do controle estático.

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

WM_CTLCOLORSTATIC

    WPARAM wParam;
    LPARAM lParam; 

Parâmetros

wParam

Manipule para o contexto do dispositivo para a janela de controle estático.

lParam

Manipule para o controle estático.

Retornar valor

Se um aplicativo processar essa mensagem, o valor retornado será um identificador para um pincel que o sistema usa para pintar a tela de fundo do controle estático.

Comentários

Se o aplicativo retornar um pincel que ele criou (por exemplo, usando a função CreateSolidBrush ou CreateBrushIndirect ), o aplicativo deverá liberar o pincel. Se o aplicativo retornar um pincel do sistema (por exemplo, um que foi recuperado pela função GetStockObject ou GetSysColorBrush ), o aplicativo não precisará liberar o pincel.

Por padrão, a função DefWindowProc seleciona as cores padrão do sistema para o controle estático.

Você pode definir a cor da tela de fundo do texto de um controle de edição desabilitado, mas não pode definir a cor de primeiro plano do texto. O sistema sempre usa COLOR_GRAYTEXT.

Os controles de edição que não são somente leitura ou desabilitados não enviam a mensagem de WM_CTLCOLORSTATIC ; Em vez disso, eles enviam a mensagem WM_CTLCOLOREDIT .

A mensagem WM_CTLCOLORSTATIC nunca é enviada entre threads; ele é enviado somente dentro do mesmo thread.

Se um procedimento de caixa de diálogo manipular essa mensagem, ele deverá converter o valor retornado desejado em um INT_PTR e retornar o valor diretamente. Se o procedimento da caixa de diálogo retornar FALSE, o tratamento de mensagens padrão será executado. O valor DWL_MSGRESULT definido pela função SetWindowLong é ignorado.

Exemplos

O exemplo C++ a seguir mostra como definir as cores de primeiro plano e de plano de fundo de um controle estático em resposta à mensagem WM_CTLCOLORSTATIC . A hbrBkgnd variável é uma variável HBRUSH estática que é inicializada como NULL e armazena o pincel em segundo plano entre as chamadas para WM_CTLCOLORSTATIC. O pincel deve ser destruído por uma chamada para a função DeleteObject quando ele não é mais necessário, normalmente quando a caixa de diálogo associada é destruída.

   case WM_CTLCOLORSTATIC:
        {
        HDC hdcStatic = (HDC) wParam;
        SetTextColor(hdcStatic, RGB(255,255,255));
        SetBkColor(hdcStatic, RGB(0,0,0));

        if (hbrBkgnd == NULL)
        {
            hbrBkgnd = CreateSolidBrush(RGB(0,0,0));
        }
        return (INT_PTR)hbrBkgnd;
        }

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho
Winuser.h (inclui Windows.h)

Confira também

Referência

WM_CTLCOLORBTN

WM_CTLCOLOREDIT

WM_CTLCOLORLISTBOX

WM_CTLCOLORSCROLLBAR

Outros recursos

DefWindowProc

Realizepalette

SelectPalette

WM_CTLCOLORDLG