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