virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
Параметры
lpDrawItemStruct
Указатель на структуру DRAWITEMSTRUCT, которая содержит информацию относительно типа требуемого рисунка.
Замечания
Вызванный рамкой, когда визуальный аспект выведенных владельцем меню изменился . ItemAction член структуры DRAWITEMSTRUCT определяет действие рисунка, которое должно выполниться. Перегрузите эту функцию, чтобы выполнить рисунок для владельца - выводящегося объект CMenu. Прикладная программа должна восстановить все графические объекты (GDI) интерфейса устройства, выбранные для контекста дисплея, обеспеченного в lpDrawItemStruct перед завершением этой функции.
Пример
// Перегрузите DrawItem () чтобы выполнить рисунок для
// владельца - выводящегося объект CMenu.
// CColorMenu - класс наследник CMenu.
void CColorMenu::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC* pDC = CDC::FromHandle(lpDIS->hDC);
COLORREF cr = (COLORREF)lpDIS->itemData; // RGB в данных элемента
if (lpDIS->itemAction & ODA_DRAWENTIRE)
{
// Красьте цветной элемент в запрошенном цвете
CBrush br(cr);
pDC->FillRect(&lpDIS->rcItem, &br);
}
if ((lpDIS->itemState & ODS_SELECTED) &&
(lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
{
// Элемент был выбран - hilite рамка
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))
{
// Отменили выбор элемента- удаляем рамку
CBrush br(cr);
pDC->FrameRect(&lpDIS->rcItem, &br);
}
}