Пользовательские списки

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

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

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

Владелец рисуемого владельцем списка может обработать сообщение WM_MEASUREITEM , чтобы указать размеры элементов списка. Если приложение создает в списке, используя стиль LBS_OWNERDRAWFIXED, система посылает сообщение WM_MEASUREITEM только один раз. Измерения, указанные владельцем используются для всех элементов списка. Если используется стиль LBS_OWNERDRAWVARIABLE, система посылает сообщение WM_MEASUREITEM для каждого элемента списка, добавлены в список. Владелец может определить или задать высоту элемента списка в любое время с помощью сообщенияB_GETITEMHEIGHT L и LB_SETITEMHEIGHT соответственно.

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

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

Пример рисуемого владельцем списка содержатся в разделе Создание списка Owner-Drawn.

Index