CMenu::DrawItem
Chiamato dal framework quando un aspetto visivo delle modifiche create dal proprietario di un menu.
virtual void DrawItem(
LPDRAWITEMSTRUCT lpDrawItemStruct
);
Parametri
- lpDrawItemStruct
Un puntatore a una struttura DRAWITEMSTRUCT contenente le informazioni sul tipo di disegno richiesto.
Note
Il membro itemAction della struttura DRAWITEMSTRUCT definisce l'azione di disegno che deve essere eseguita. Eseguire l'override della funzione membro per implementare il disegno per un oggetto CMenu del disegno personalizzato. L'applicazione deve ripristinare tutti gli oggetti di (GDI) (application programming Interface) selezionati per il contesto di visualizzazione disponibile in lpDrawItemStruct prima della chiusura della funzione membro.
Vedere CWnd::OnDrawItem per una descrizione della struttura DRAWITEMSTRUCT.
Esempio
Il seguente codice viene generato nell'esempio MFC In 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);
}
}
Requisiti
Header: afxwin.h