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 |
|
Confira também
-
Referência
-
Outros recursos