Sdílet prostřednictvím


CWnd::OnCtlColor

Rámci volání této funkce člena při podřízeném ovládacím prvku je třeba.

afx_msg HBRUSH OnCtlColor(
   CDC* pDC,
   CWnd* pWnd,
   UINT nCtlColor 
);

Parametry

  • pDC
    Obsahuje ukazatel na kontext zobrazení pro podřízené okno.Může být dočasný.

  • pWnd
    Obsahuje ukazatel na ovládací prvek barvy s dotazem.Může být dočasný.

  • nCtlColor
    Obsahuje jednu z následujících hodnot, určující typ ovládacího prvku:

    • CTLCOLOR_BTN ovládací tlačítka

    • CTLCOLOR_DLG dialogové okno

    • CTLCOLOR_EDIT ovládací prvek pro úpravy

    • CTLCOLOR_LISTBOX ovládací prvek pole seznamu

    • CTLCOLOR_MSGBOX zprávou

    • CTLCOLOR_SCROLLBAR ovládací prvek posuvník

    • CTLCOLOR_STATIC statické ovládací prvek

Vrácená hodnota

OnCtlColorštětec, který má být použit pro malování na pozadí ovládacího prvku musí vrátit popisovač.

Poznámky

Většina ovládacích prvků jejich nadřízené (obvykle dialogové) připravit odeslání této zprávy pDC pro kreslení řízení pomocí správné barvy.

Chcete-li změnit barvu textu, volat SetTextColor členské funkce s hodnotami požadované červené, zelené a modré (RGB).

Změnit barvu pozadí ovládacího prvku pro úpravy jeden řádek, nastavte popisovač stopy v obou CTLCOLOR_EDIT a CTLCOLOR_MSGBOX zpráva kódy a volání CDC::SetBkColor funkce v reakci CTLCOLOR_EDIT kód.

OnCtlColornebude volat pro seznam rozevíracím seznamem, protože pole rozevíracího seznamu je skutečně Podřízená pole se seznamem a není podřízeným okna.Chcete-li změnit barvu pole rozevíracího seznamu, vytvoření CComboBox s lokálními z OnCtlColor , kontroluje CTLCOLOR_LISTBOX v nCtlColor parametr.V této obslužné rutiny SetBkColor nastavit barvu pozadí textu, musí použít členské funkce.

[!POZNÁMKA]

Tato funkce člena volá framework umožňující aplikaci pro zpracování zprávy systému Windows.Parametry předané funkce odrážejí parametry přijatých v rámci byla zpráva přijata.Že provádění volání třídy base provádění této funkce bude použita parametry původně předané zprávy a není zadané parametry funkce.Třída dialogové okno Přidat následující metodu, přidání procesu zpracování zpráv pro WM_CTLCOLOR pomocí podokna Vlastnosti Visual Studio.Ručně můžete přidat příkaz ON_WM_CTLCOLOR() položku mapy zprávy.

Příklad

// 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;
}

Požadavky

Záhlaví: afxwin.h

Viz také

Referenční dokumentace

Třída CWnd

Diagram hierarchie

CDC::SetBkColor