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