CMenu::DrawItem
Wywołana przez ramy podczas visual aspekt zmiany menu rysowania przez właściciela.
virtual void DrawItem(
LPDRAWITEMSTRUCT lpDrawItemStruct
);
Parametry
- lpDrawItemStruct
Wskaźnik do DRAWITEMSTRUCT strukturę, która zawiera informacje o typie rysunku wymagane.
Uwagi
itemAction Członek DRAWITEMSTRUCT struktury definiuje rysunku akcję, która ma być wykonywana.Zastąpienie tej funkcji Członkowskich do zaimplementowania rysunku do rysowania przez właściciela CMenu obiektu.Aplikacji, należy przywrócić wszystkie obiekty grafiki urządzenia interfejsu (GDI), wybierane w kontekście wyświetlania dostarczonych w lpDrawItemStruct przed terminem wygaśnięcia tej funkcji składowej.
Zobacz CWnd::OnDrawItem opis DRAWITEMSTRUCT struktury.
Przykład
Poniższy kod jest z MFC CTRLTEST próbki:
// 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);
}
}
Wymagania
Nagłówek: afxwin.h