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