Рисуемого владельцем поля со списком

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

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

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

Владелец рисуемого владельцем списком может обработать сообщение WM_MEASUREITEM , чтобы указать размеры элементов списка в поле со списком. Если приложение создает поле со списком, используя стиль CBS_OWNERDRAWFIXED, система посылает сообщение WM_MEASUREITEM только один раз. Измерения, указанные владельцем используются для всех элементов списка. Если используется стиль CBS_OWNERDRAWVARIABLE, система посылает сообщение WM_MEASUREITEM для каждого элемента списка, добавлен в поле со списком. Владелец может определить или задать высоту элемента списка в любое время с помощью сообщения CB_GETITEMHEIGHT и CB_SETITEMHEIGHT соответственно.

Если сведения, отображаемые в нарисованном владельцем списком содержит текст, приложение может уследить за текст для каждого элемента списка, указав в CBS_HASSTRINGS стиле. Поля со списком с CBS_SORT стилем сортируются по этому тексту. Если поле со списком сортировка и не CBS_HASSTRINGS стиля, владелец должен обработать сообщение WM_COMPAREITEM.

В нарисованном владельцем списком владелец должен keep track of элементов списка, содержащие информацию помимо или в дополнение к тексту. Один удобный способ это сделать — сохранить дескриптор к информации как данные элемента. Дополнительные сведения о данных элемента в разделе Данные, связанные с элементами списка. Чтобы освободить объекты данных, связанных с элементами в поле со списком, владелец может обработать сообщение WM_DELETEITEM.

В качестве примера рисуемого владельцем списком разделе Создание Owner-Drawn Combo Box.

Index