CWnd::OnCtlColor
Das Framework ruft diese Memberfunktion auf, wenn ein untergeordnetes Steuerelement im Begriff ist gezeichnet werden.
afx_msg HBRUSH OnCtlColor(
CDC* pDC,
CWnd* pWnd,
UINT nCtlColor
);
Parameter
pDC
Enthält einen Zeiger auf das Anzeigekontext für das untergeordnete Fenster.Kann temporär sein.pWnd
Enthält einen Zeiger auf das Steuerelement fordern die Farbe.Kann temporär sein.nCtlColor
Enthält einen der folgenden Werte und gibt den Typ des Steuerelements an:CTLCOLOR_BTN Schaltflächen-Steuerelement
CTLCOLOR_DLG Dialogfeld
CTLCOLOR_EDIT Bearbeitungssteuerelement
CTLCOLOR_LISTBOX Listenfeld-Steuerelement
CTLCOLOR_MSGBOX Meldungsfeld
CTLCOLOR_SCROLLBAR ScrollBar-Steuerelement
CTLCOLOR_STATIC statisches Steuerelement
Rückgabewert
OnCtlColor muss ein Handle für Pinsel zurückgeben, der zum Zeichnen des Steuerhintergrunds verwendet werden soll.
Hinweise
Die meisten Steuerelemente senden diese Meldung zum übergeordneten Element (normalerweise ein Dialogfeld) um pDC für das Zeichnen des Steuerelements mit der richtigen Farben vorzubereiten.
Um die Textfarbe zu ändern, rufen Sie die SetTextColor-Memberfunktion mit den gewünschten Rot-, Grün- und blauen Werte (RGB) auf.
Um die Hintergrundfarbe eines einzeiligen Bearbeitungssteuerelements ändern, den Bürstenstiel in der CTLCOLOR_EDIT und CTLCOLOR_MSGBOX Meldung Code festlegen, und die CDC::SetBkColor-Funktion auf den CTLCOLOR_EDIT Code aufrufen.
OnCtlColor wird nicht für das Listenfeld eines Dropdown-Kombinationsfelds aufgerufen, da das Dropdown-Listenfeld tatsächlich ein untergeordnetes Element des Kombinationsfelds und kein untergeordnetes Element des Fensters ist.Um die Farbe des Dropdown-Listenfelds zu ändern, erstellen Sie CComboBox mit einer Überschreibung von OnCtlColor für die CTLCOLOR_LISTBOX im nCtlColor-Parameter überprüft.In diesem Handler muss die SetBkColor-Memberfunktion verwendet werden, um die Hintergrundfarbe für den Text festzulegen.
Hinweis |
---|
Diese Memberfunktion wird vom Framework aufgerufen, um die Anwendung zu ermöglichen, eine Windows-Meldung zu bearbeiten.Die Parameter, die an die Funktion übergeben werden, geben die Parameter, die vom Framework empfangen werden, als die Nachricht empfangen wurde.Wenn Sie die Basisklassenimplementierung dieser Funktion aufrufen, verwendet diese Implementierung die Parameter, die mit der Meldung übergeben werden und nicht die Parameter, die an die Funktion bereitstellen.Um die folgende Methode der Dialogfeldklasse hinzuzufügen, verwenden Sie den Visual Studio-Eigenschaftenbereich um einen Meldungshandler für WM_CTLCOLOR hinzuzufügen.Alternativ können Sie einen Eintrag ON_WM_CTLCOLOR() der Meldungszuordnung manuell hinzufügen. |
Beispiel
// 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;
}
Anforderungen
Header: afxwin.h