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); } }