Шаг 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);
}

Hosted by uCoz