Freigeben über


CButton::DrawItem

Aufgerufen vom - Framework ausgelöst, wenn ein visueller Aspekt einer Ownerdrawnschaltfläche geändert hat.

virtual void DrawItem( 
   LPDRAWITEMSTRUCT lpDrawItemStruct  
);

Parameter

  • lpDrawItemStruct
    Ein langer Zeiger auf eine Struktur DRAWITEMSTRUCT. Die Struktur enthält Informationen über das Element, um gezeichnet wird und den Typ des Zeichnens erfordert.

Hinweise

Eine Ownerdrawnschaltfläche hat den festgelegten BS_OWNERDRAW Format. Überschreiben Sie diese Memberfunktion, um Zeichnen für ein Ownerdrawn-CButton-Objekt zu implementieren. Die Anwendung sollte alle Objekte des GDI (Graphics Device Interface) wiederherstellen, die für den Anzeigekontext ausgewählt werden, der in lpDrawItemStruct angegeben wird, bevor die Memberfunktion beendet wird.

Siehe auch die BS_ Formatwerte.

Beispiel

// NOTE: CMyButton is a class derived from CButton. The CMyButton 
// object was created as follows: 
// 
// CMyButton myButton; 
// myButton.Create(_T("My button"), 
//      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW,  
//      CRect(10,10,100,30), pParentWnd, 1); 
// 

// This example implements the DrawItem method for a CButton-derived  
// class that draws the button's text using the color red. 
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
   UINT uStyle = DFCS_BUTTONPUSH;

   // This code only works with buttons.
   ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

   // If drawing selected, add the pushed style to DrawFrameControl. 
   if (lpDrawItemStruct->itemState & ODS_SELECTED)
      uStyle |= DFCS_PUSHED;

   // Draw the button frame.
   ::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, 
      DFC_BUTTON, uStyle);

   // Get the button's text.
   CString strText;
   GetWindowText(strText);

   // Draw the button text using the text color red.
   COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0));
   ::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), 
      &lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
   ::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CButton-Klasse

Hierarchiediagramm

CButton::SetButtonStyle

WM_DRAWITEM