Freigeben über


CMenu::DrawItem

Aufgerufen vom Framework ausgelöst, wenn ein visueller Aspekt eines Ownerdrawnmenüs ändert.

virtual void DrawItem( 
   LPDRAWITEMSTRUCT lpDrawItemStruct  
);

Parameter

  • lpDrawItemStruct
    Ein Zeiger auf eine DRAWITEMSTRUCT-Struktur, die Informationen über den Typ des Zeichnens erfordert enthält.

Hinweise

Der itemAction-Member der DRAWITEMSTRUCT-Struktur definiert die Zeichnungsaktion, die ausgeführt werden soll. Überschreiben Sie diese Memberfunktion, um Zeichnen für ein Ownerdrawn-CMenu-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 vor der Beendigung dieser Memberfunktion angegeben wird.

Siehe CWnd::OnDrawItem für eine Beschreibung der DRAWITEMSTRUCT-Struktur.

Beispiel

Der folgende Code vom Beispiel 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);
   }
}

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CMenu-Klasse

Hierarchiediagramm