Структура DRAWITEMSTRUCT (winuser.h)

Предоставляет сведения, которые окно владельца использует для определения способа рисования нарисованного владельцем элемента управления или пункта меню. Окно владельца элемента управления или элемента меню, нарисованного владельцем, получает указатель на эту структуру в качестве параметра lParamWM_DRAWITEM сообщения.

Синтаксис

typedef struct tagDRAWITEMSTRUCT {
  UINT      CtlType;
  UINT      CtlID;
  UINT      itemID;
  UINT      itemAction;
  UINT      itemState;
  HWND      hwndItem;
  HDC       hDC;
  RECT      rcItem;
  ULONG_PTR itemData;
} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;

Члены

CtlType

Тип: UINT

Тип элемента управления. Этот элемент может иметь одно из следующих значений. См. заметки.

Значение Значение
ODT_BUTTON
Кнопка, нарисованная владельцем
ODT_COMBOBOX
Поле со списком, нарисованное владельцем
ODT_LISTBOX
Список, нарисованный владельцем
ODT_LISTVIEW
Элемент управления "Представление списка"
ODT_MENU
Пункт меню, нарисованный владельцем
ODT_STATIC
Статический элемент управления, нарисованный владельцем
ODT_TAB
Элемент управления табуляции

CtlID

Тип: UINT

Идентификатор поля со списком, списка, кнопки или статического элемента управления. Этот элемент не используется для пункта меню.

itemID

Тип: UINT

Идентификатор элемента меню для элемента меню или индекс элемента в списке или поле со списком. Для пустого списка или поля со списком этим элементом может быть -1. Это позволяет приложению рисовать только прямоугольник фокуса в координатах, указанных элементом rcItem , даже если в элементе управления нет элементов. Это указывает пользователю, имеет ли фокус поле со списком или поле со списком. Способ задания битов в элементе itemAction определяет, должен ли прямоугольник быть нарисован так, как будто поле со списком или поле со списком находится в фокусе.

itemAction

Тип: UINT

Требуемое действие рисования. Этот элемент может быть одним или несколькими значениями.

Значение Значение
ODA_DRAWENTIRE
Необходимо нарисовать весь элемент управления.
ODA_FOCUS
Элемент управления потерял или получил фокус клавиатуры. Элемент itemState должен быть проверен, чтобы определить, имеет ли элемент управления фокус.
ODA_SELECT
Состояние выбора изменилось. Чтобы определить новое состояние выбора, следует проверить элемент itemState .

itemState

Тип: UINT

Визуальное состояние элемента после текущего действия рисования. Этот элемент может быть сочетанием значений, показанных в следующей таблице.

Значение Значение
ODS_CHECKED
Элемент меню должен быть установлен. Этот бит используется только в меню.
ODS_COMBOBOXEDIT
Рисование выполняется в поле выбора (элемент управления "Изменить") поля со списком, нарисованного владельцем.
ODS_DEFAULT
Элемент является элементом по умолчанию.
ODS_DISABLED
Элемент должен быть отрисован как отключенный.
ODS_FOCUS
Элемент имеет фокус клавиатуры.
ODS_GRAYED
Элемент должен быть серым. Этот бит используется только в меню.
ODS_HOTLIGHT
Элемент отслеживается горячим образом, то есть элемент будет выделен при наведении указателя мыши на элемент.
ODS_INACTIVE
Элемент неактивен, а окно, связанное с меню, неактивно.
ODS_NOACCEL
Элемент управления рисуется без подсказок ускорителя клавиатуры.
ODS_NOFOCUSRECT
Элемент управления рисуется без подсказок индикатора фокуса.
ODS_SELECTED
Выбрано состояние элемента меню.

hwndItem

Тип: HWND

Дескриптор элемента управления для полей со списком, списков, кнопок и статических элементов управления. Для меню этот элемент является дескриптором меню, которое содержит элемент .

hDC

Тип: HDC

Обработчик контекста устройства. этот контекст устройства должны использоваться при выполнении операций отображения документа на элементе управления.

rcItem

Тип: RECT

Прямоугольник, который определяет границы при отрисовке элемента управления. Этот прямоугольник находится в контексте устройства, заданном элементом hDC . Система автоматически обрезает все, что окно владельца рисует в контексте устройства для полей со списком, списков и кнопок, но не обрезает элементы меню. При рисовании пунктов меню окно владельца не должно рисовать за пределами прямоугольника, определенного элементом rcItem .

itemData

Тип: ULONG_PTR

Определяемое приложением значение, связанное с элементом меню. Для элемента управления этот параметр задает значение, которое последний раз присваивается списку или поле со списком в сообщении LB_SETITEMDATA или CB_SETITEMDATA . Если поле со списком или поле со списком имеет стиль LBS_HASSTRINGS или CBS_HASSTRINGS , это значение изначально равно нулю. В противном случае это значение изначально является значением, которое было передано в поле со списком или поле со списком в параметре lParam одного из следующих сообщений:

Если параметр CtlType имеет значение ODT_BUTTON или ODT_STATIC, аргумент itemData равен нулю.

Комментарии

Некоторые типы элементов управления, например строки состояния, не задают значение CtlType.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть winuser.h (включая Windows.h)

См. также раздел

CB_ADDSTRING

CB_INSERTSTRING

CB_SETITEMDATA

LB_ADDSTRING

LB_INSERTSTRING

LB_SETITEMDATA

Справочные материалы

WM_DRAWITEM