CMenu::DrawItem

Llamado por el marco cuando un aspecto visual de los cambios propietario-drenados de un menú.

virtual void DrawItem(
   LPDRAWITEMSTRUCT lpDrawItemStruct 
);

Parámetros

  • lpDrawItemStruct
    Un puntero a una estructura de DRAWITEMSTRUCT que contiene información sobre el tipo de gráfico requerido.

Comentarios

El miembro de itemAction de la estructura de DRAWITEMSTRUCT define la acción de dibujo que debe realizarse.Invalide esta función miembro para implementar el gráfico para un objeto de CMenu de dibujo propietario.La aplicación debe restaurar todos los objetos de la interfaz de (GDI) dispositivo gráfico seleccionado para el contexto de presentación proporcionado en lpDrawItemStruct antes de la finalización de esta función miembro.

Vea CWnd:: OnDrawItem para obtener una descripción de la estructura de DRAWITEMSTRUCT .

Ejemplo

El código siguiente es el ejemplo de 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);
   }
}

Requisitos

encabezado: afxwin.h

Vea también

Referencia

Clase CMenu

Gráfico de jerarquía