Compartilhar via


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

Consulte também

Referência

Classe CWnd

Gráfico de hierarquia

CDC::SetBkColor

Outros recursos

Membros CWnd