C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 276 - DrawItem и произвольная отрисовка элементов DRAWITEMSTRUCT / MFC шаг за шагом / Visual C++

Шаг 276 - DrawItem и произвольная отрисовка элементов DRAWITEMSTRUCT

В прошлом шаге мы с Вами посмотрели как самому перерисовать элементы списка. Но данная возможность используется часто и для многих элементов управления.

void CTabCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CListBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CButton::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CComboBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );  
void CCheckListBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CMenu::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CHeaderCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
void CStatusBar::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ); 

Со всеми этими классами работа производится совершенно идентично. Устанавливается стиль и перегружается функция DrawItem(), в которую передается указатель на структуру DRAWITEMSTRUCT содержащей информация о том, что нужно отрисовывать. Вот она какая.

/*
 * DRAWITEMSTRUCT for ownerdraw
 */
typedef struct tagDRAWITEMSTRUCT 
{
    UINT        CtlType;		// Тип элемента управления
    UINT        CtlID;		// Идентификатор элемента управления
    UINT        itemID;		// Идентификатор перерисовываемого пункта
    UINT        itemAction;		// Как перерисовывать
    UINT        itemState;		// Состояние после перерисовки
    HWND        hwndItem;		// Дескриптор элемента управления
    HDC         hDC;		// Контекст устройства рисования
    RECT        rcItem;		// Граница рисования
    DWORD       itemData;		// Адрес элемента для перерисовки
} DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;

CtlType - тип элемента для перерисовки:

  • ODT_BUTTON - Кнопка
  • ODT_COMBOBOX - Комбинированный список
  • ODT_LISTBOX - Список
  • ODT_MENU - Меню
  • ODT_LISTVIEW - Список
  • ODT_STATIC - Статический элемент управления
  • ODT_TAB - Элемент управления Таб

itemAction - как перерисовывать:

  • ODA_DRAWENTIRE - Весь элемент требует перерисовки
  • ODA_FOCUS - Смена фокуса
  • ODA_SELECT - Выбран элемент

itemState - состояние после перерисовки:

  • ODS_CHECKED - Выбран
  • ODS_DISABLED - Запрещен к выбору.
  • ODS_FOCUS - Имеет фокус
  • ODS_GRAYED - Элемент недоступен
  • ODS_SELECTED - Элемент выбран
  • ODS_DEFAULT - Элемент по умолчанию

| |
Автор Каев Артем.
[AD]