Partager via


CMenu::DrawItem

Appelé par l'infrastructure lorsqu'un aspect visuel d'un menu owner-drawn change.

virtual void DrawItem(
   LPDRAWITEMSTRUCT lpDrawItemStruct 
);

Paramètres

  • lpDrawItemStruct
    Un pointeur vers une structure de DRAWITEMSTRUCT qui contient des informations sur le type de dessin requis.

Notes

Le membre d' itemAction de la structure d' DRAWITEMSTRUCT définit le dessin qui doit être exécuté.Remplacez cette fonction membre pour implémenter le dessin d'un objet d' CMenu owner draw.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 l'arrêt de cette fonction membre.

Consultez CWnd::OnDrawItem pour obtenir une description de la structure d' DRAWITEMSTRUCT .

Exemple

Le code suivant est de l'exemple MFC CTRLTEST :

// Override DrawItem() to implement drawing for an owner-draw CMenu object.
// CColorMenu is a CMenu-derived class.
void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
   CDC* pDC = CDC::FromHandle(lpDIS->hDC);
   COLORREF cr = (COLORREF)lpDIS->itemData; // RGB in item data

   if (lpDIS->itemAction & ODA_DRAWENTIRE)
   {
      // Paint the color item in the color requested
      CBrush br(cr);
      pDC->FillRect(&lpDIS->rcItem, &br);
   }

   if ((lpDIS->itemState & ODS_SELECTED) &&
      (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
   {
      // item has been selected - hilite frame
      COLORREF crHilite = RGB(255-GetRValue(cr),
                  255-GetGValue(cr), 255-GetBValue(cr));
      CBrush br(crHilite);
      pDC->FrameRect(&lpDIS->rcItem, &br);
   }

   if (!(lpDIS->itemState & ODS_SELECTED) &&
      (lpDIS->itemAction & ODA_SELECT))
   {
      // Item has been de-selected -- remove frame
      CBrush br(cr);
      pDC->FrameRect(&lpDIS->rcItem, &br);
   }
}

Configuration requise

Header: afxwin.h

Voir aussi

Référence

Classe de CMenu

Graphique de la hiérarchie