Partager via


CButton::DrawItem

Appelé par l'infrastructure lorsqu'un aspect visuel d'un bouton owner-drawn a changé.

virtual void DrawItem( 
   LPDRAWITEMSTRUCT lpDrawItemStruct  
);

Paramètres

  • lpDrawItemStruct
    Un long pointeur vers une structure de DRAWITEMSTRUCT . La structure contient des informations sur l'élément pour être effectuée et le type de dessin requis.

Notes

Un bouton owner-drawn a le style de BS_OWNERDRAW défini. Remplacez cette fonction membre pour implémenter le dessin owner-drawn pour un objet d' CButton . L'application doit restaurer tous les objets de définition de données (GDI) Graphics Device Interface sélectionnés pour le contexte d'affichage fourni dans lpDrawItemStruct avant que la fonction membre se termine.

Consultez également les valeurs de style de BS_ .

Exemple

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

Configuration requise

Header: afxwin.h

Voir aussi

Référence

CButton, classe

Graphique de la hiérarchie

CButton::SetButtonStyle

WM_DRAWITEM