Шаг 487 - CButton::DrawItem

virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );

Параметры
lpDrawItemStruct
Длинный указатель на структуру DRAWITEMSTRUCT. Структура содержит информацию относительно элемента, который будет выведен и тип требуемого рисунка.

Замечания
Вызывается рамкой, когда визуальный аспект выведенной владельцем кнопки изменился. Выведенная владельцем кнопка имеет BS_OWNERDRAW набор стилей. Перегрузите эту функцию чтобы выполнить рисунок для выведенного владельцем объекта CButton. Прикладная программа должна восстановить все графические объекты (GDI) выбранные для контекста дисплея обеспеченного в lpDrawItemStruct прежде, чем функция завершается.

Пример

// CButton класс  полученный из CButton. CMyButton
// объект был создан следующим образом:
//
// CMyButton myButton;
// myButton.Create(_T("My button"), 
//      WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_OWNERDRAW, 
//      CRect(10,10,100,30), pParentWnd, 1);
//

// Этот пример осуществляет DrawItem метод для CButton-полученного 
// класса, который выводит текстовое использование кнопки красного цвета.
void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	UINT uStyle = DFCS_BUTTONPUSH;

	// Этот код работает только  с кнопками.
	ASSERT(lpDrawItemStruct->CtlType == ODT_BUTTON);

	// Если  рисуем выбранную, добавьте нажатый 
	// стиль к DrawFrameControl.
	if (lpDrawItemStruct->itemState & ODS_SELECTED)
		uStyle |= DFCS_PUSHED;

	// Рисуем рамку кнопки
	::DrawFrameControl(lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, 
		DFC_BUTTON, uStyle);

	// Получите текст кнопки.
	CString strText;
	GetWindowText(strText);

	// Выведите текст кнопки  красного цвета текст.
	COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC, RGB(255,0,0));
	::DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), 
		&lpDrawItemStruct->rcItem, DT_SINGLELINE|DT_VCENTER|DT_CENTER);
	::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}

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