Condividi tramite


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

Vedere anche

Riferimenti

Classe di CMenu

Grafico della gerarchia