CMenu::DrawItem
Appelé par l'infrastructure lorsqu'un aspect visuel d'un menu owner-drawn change.
virtual void DrawItem(
LPDRAWITEMSTRUCT lpDrawItemStruct
);
Paramètres
- lpDrawItemStruct
Un pointeur vers une structure de DRAWITEMSTRUCT qui contient des informations sur le type de dessin requis.
Notes
Le membre d' itemAction de la structure d' DRAWITEMSTRUCT définit le dessin qui doit être exécuté. Remplacez cette fonction membre pour implémenter le dessin d'un objet d' CMenu owner draw. L'application doit restaurer tous les objets de définition de données (GDI) Graphics Device Interface sélectionnés pour le contexte d'affichage fourni dans lpDrawItemStruct avant l'arrêt de cette fonction membre.
Consultez CWnd::OnDrawItem pour obtenir une description de la structure d' DRAWITEMSTRUCT .
Exemple
Le code suivant est de l'exemple 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);
}
}
Configuration requise
Header: afxwin.h