CWnd::OnCtlColor
A estrutura chama esta função de membro quando um controle filho está prestes a ser desenhada.
afx_msg HBRUSH OnCtlColor(
CDC* pDC,
CWnd* pWnd,
UINT nCtlColor
);
Parâmetros
pDC
Contém um ponteiro para o contexto de exibição para a janela filho.Pode ser temporário.pWnd
Contém um ponteiro para o controle pedindo a cor.Pode ser temporário.nCtlColor
Contém um dos valores a seguir, especificando o tipo de controle:CTLCOLOR_BTN controle de botão
CTLCOLOR_DLG Caixa de diálogo
CTLCOLOR_EDIT Controle de edição
CTLCOLOR_listaBOX lista-controle de caixa
CTLCOLOR_MSGBOX Caixa de mensagem
CTLCOLOR_SCROLLBAR Controle da BAR de rolar
CTLCOLOR_STATIC Controle estático
Valor de retorno
OnCtlColor deve retornar um identificador para o pincel a ser usado para pintar o plano de fundo do controle.
Comentários
A maioria dos controles envie esta mensagem para seu pai (geralmente uma caixa de diálogo) para preparar o pDC Para desenhar o controle usando as cores corretas.
Para alterar a cor do texto, telefonar o SetTextColor função de membro com os valores de (RGB) desejado vermelho, verdes e azuis.
Para alterar o plano de fundo, cor de uma linha única Editar controle, conjunto a alça de pincel a CTLCOLOR_EDIT and CTLCOLOR_MSGBOX códigos de mensagem e chamar o CDC::conjuntoBkColor função em resposta à CTLCOLOR_EDIT código.
OnCtlColor não será chamado para o lista caixa de uma operação de soltar - caixa de combinação suspensa porque na lista suspensa lista caixa é realmente um filho da caixa de combinação e não é um filho da janela. Para alterar a cor da caixa de listagem drop-down, crie um CComboBox com uma substituir do OnCtlColor que procura CTLCOLOR_LISTBOX in the nCtlColor parâmetro. Neste manipulador, o SetBkColor função de membro deve ser usada para conjunto a cor do plano de fundo do texto.
Observação: |
---|
Essa função de membro é chamada pela estrutura para permitir que seu aplicativo manipular uma mensagem do Windows.Os parâmetros passados para sua função refletem os parâmetros recebidos pela estrutura quando a mensagem foi recebida.Se você chamar a implementação da classe de base dessa função, essa implementação usará os parâmetros passados originalmente com a mensagem e não os parâmetros que você fornecer para a função. |
Exemplo
// This OnCtlColor handler will change the color of a static control
// with the ID of IDC_MYSTATIC. The code assumes that the CPenWidthsDlg
// class has an initialized and created CBrush member named m_brush.
// The control will be painted with red text and a background
// color of m_brush.
HBRUSH CPenWidthsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// Call the base class implementation first! Otherwise, it may
// undo what we're trying to accomplish here.
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// Are we painting the IDC_MYSTATIC control? We can use
// CWnd::GetDlgCtrlID() to perform the most efficient test.
if (pWnd->GetDlgCtrlID() == IDC_MYSTATIC)
{
// Set the text color to red
pDC->SetTextColor(RGB(255, 0, 0));
// Set the background mode for text to transparent
// so background will show thru.
pDC->SetBkMode(TRANSPARENT);
// Return handle to our CBrush object
hbr = m_brush;
}
return hbr;
}
Requisitos
Cabeçalho: afxwin.h