Списки изображений
Итак, вы создали окно органа управления List View, выбрав для него подходящий набор стилей. Теперь следует заняться наполнением этого окна изображениями и элементами списка.
В зависимости от того, в каких режимах будет работать создаваемый вами орган управления List View, вы должны создать один, два или три списка из следующего набора:
Как выбрать нужные списки?
Список стандартных пиктограмм нужен только в том случае, если вы будете использовать орган управления List View в режиме LVS_ICON (рис.3.2 в разделе "Приложение List Application").
Список пиктограмм уменьшенного размера нужен для всех остальных режимов (рис. 3.1, 3.3, 3.4).
Что же касается списка пиктограмм состояния (state image list), то он используется для выделения состояния отдельных элементов списка. В SDK есть исходные тексты приложения ListCtrl, создающего список пиктограмм состояния. |
Для создания списка изображения вы должны вызвать функцию ImageList_Create :
HIMAGELIST WINAPI ImageList_Create( int cx, // ширина изображения int cy, // высота изображения UINT flags, // тип изображения int cInitial, // первоначальное количество изображений int cGrow); // количество изображений, на которое // увеличится размер списка при добавлении новых изображений
Параметры cx и cy определяют, соответственно, ширину и высоту добавляемых изображений. Если вы создаете список пиктограмм стандартного или уменьшенного размера, для определения значения этих параметров следует использовать функцию GetSystemMetrics , передав ей в первом случае параметры SM_CXICON и SM_CYICON , а во втором - параметры SM_CXSMICON и SM_CYSMICON .
Функция GetSystemMetrics была нами описана в 11 томе "Библиотеки системного программиста".
Параметр flags определяет тип изображений, из которых состоит список. Вы можете создавать список из пиктограмм, аппаратно-зависимых битовых изображений DDB или аппаратно-независимых битовых изображений DIB. Приведем список возможных значений параметра flags:
Значение | Описание |
ILC_COLOR4 | 4-битовое изображение DIB |
ILC_COLOR8 | 8-битовое изображение DIB |
ILC_COLOR16 | 16-битовое изображение DIB |
ILC_COLOR24 | 24-битовое изображение DIB |
ILC_COLOR32 | 32-битовое изображение DIB |
ILC_PALETTE | Используются цветовые палитры |
ILC_COLORDDB | Изображение DDB |
ILC_MASK | Использование маски. Изображение состоит из двух изображений, причем одно из них является монохромной маской. Такой формат имеют пиктограммы и курсоры |
Параметр cInitial определяет размер блока памяти, выделяемого для хранения изображений, так как этот размер зависит от количества изображений. При добавлении в созданный список новых изображений сверх значения, указанного в этом параметре, происходит динамическое изменение размера заказанного блока памяти. Такое изменение выполняется в соответствии со значением параметра cGrow.
Функция ImageList_Create при нормальном завершении возвращает идентификатор созданного списка изображений, который надо сохранить для дальнейшего использования. В случае ошибки возвращается значение NULL.
Ниже приведен пример создания двух списков, в которые первоначально будет добавлено девять изображений:
himlSmall = ImageList_Create( GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON), ILC_MASK, 9, 1); himlLarge = ImageList_Create( GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), ILC_MASK, 9, 1);