Шаг 883 - CMenu::DrawItem

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

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 9.02.2002