Операционная система Windows 95 для программиста

Создание окна List View


Окно органа управления List View создается функцией CreateWindowEx на базе класса окна WC_LISTVIEW , например так:

hwndList = CreateWindowEx(0L, WC_LISTVIEW, "", WS_VISIBLE | WS_CHILD | WS_BORDER | LVS_REPORT | LVS_EDITLABELS, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hWnd, (HMENU)IDC_LISTVIEW, hInst, NULL);

Перед вызовом этой функции вы должны загрузить в память DLL-библиотеку COMCTL32.DLL , для чего следует вызвать функцию InitCommonControls без параметров.

В дополнение к обычным стилям окна, таким как WS_VISIBLE, WS_CHILD и WS_BORDER, необходимо указать специальные стили с префиксом имени LVS_, определяющие внешний вид и поведение органа управления List View. Как минимум, следует указать один из следующих четырех стилей: LVS_REPORT , LVS_ICON, LVS_SMALLICON или LVS_LIST.

Ниже мы привели краткое описание этих, а также остальных стилей окна List View.



Стиль Описание
LVS_REPORT Список отображается в виде детального отчета, состоящего из нескольких столбцов (рис. 3.1)
LVS_ICON Список отображается в виде окна с пиктограммами стандартного размера (рис. 3.2)
LVS_SMALLICON Список отображается в виде окна с пиктограммами уменьшенного размера (рис. 3.3)
LVS_LIST Простой список с пиктограммами уменьшенного размера (рис. 3.4)
LVS_ALIGNLEFT Используется вместе с LVS_ICON и LVS_SMALLICON. Если указан этот стиль, пиктограммы будут выровнены по левой границе
LVS_ALIGNTOP Используется вместе с LVS_ICON и LVS_SMALLICON. Если указан этот стиль, пиктограммы будут выровнены по верхней границе. Стиль LVS_ALIGNTOP используется по умолчанию
LVS_AUTOARRANGE Используется вместе с LVS_ICON и LVS_SMALLICON для выполнения автоматического размещения пиктограмм внутри окна органа управления List View
LVS_NOSCROLL Отключение возможности свертки содержимого окна органа управления List View
LVS_EDITLABELS Этот стиль позволяет пользователю редактировать название элемента списка. Если указан стиль LVS_EDITLABELS, приложение должно обрабатывать извещение LVN_ENDLABELEDIT, которое будет описано позже
LVS_NOCOLUMNHEADER Если указан стиль LVS_NOCOLUMNHEADER, в режиме детального просмотра не отображается заголовок столбцов, с помощью которого выполняется сортировка и изменение размера столбцов
LVS_NOLABELWRAP Подпись под пиктограммами отображается в одной строке
LVS_NOSORTHEADER Если указан этот стиль, с помощью заголовка окна невозможно выполнить сортировку столбцов в режиме детального просмотра
LVS_OWNERDRAWFIXED Стиль позволяет родительскому окну выполнить рисование содержимого списка. Для этого родительское окно должно обрабатывать сообщение WM_DRAWITEM
LVS_SHAREIMAGELIST Этот стиль предназначен для организации совместного использования списков изображений несколькими органами управления List View
LVS_SHOWSELALWAYS Выбранные элементы списка отображаются с выделением даже в том случае, когда орган управления List View не активен
LVS_SINGLESEL Пользователь может выделить в списке только один элемент (по умолчанию можно выделить сразу несколько элементов)
LVS_SORTASCENDING Выполнение сортировки текстовых строк элементов в прямом порядке
LVS_SORTDESCENDING То же, но в обратном порядке
<
Как мы уже говорили, стили LVS_REPORT, LVS_ICON, LVS_SMALLICON и LVS_LIST определяют режим работы органа управления List View. При создании этого органа управления вы должны указать только один из перечисленных стилей. Однако в дальнейшем если появится необходимость изменить режим работы, это можно будет легко сделать при помощи функций GetWindowLong и SetWindowLong .

Когда список отображается в виде окна со стандартными или уменьшенными пиктограммами, у вас есть возможность выбрать один из нескольких способов выравнивания пиктограмм во внутренней области этого окна. Для этого вы должны указать один из следующих стилей: LVS_ALIGNLEFT, LVS_ALIGNTOP или LVS_AUTOARRANGE.

По умолчанию (если не указан стиль LVS_ALIGNLEFT) пиктограммы выравниваются по верхней границе окна. Такое поведение соответствует стилю LVS_ALIGNTOP. Вы можете также выровнять пиктограммы по левой границе окна, задав стиль LVS_ALIGNLEFT. Разумеется, стили LVS_ALIGNTOP и LVS_ALIGNLEFT несовместимы, поэтому вы можете использовать только один из них.

Для пользователя будет удобнее, если при изменении размеров окна просмотра пиктограммы будут автоматически перемещаться таким образом, чтобы по возможности занимать всю полезную площадь окна. Вы можете организовать автоматическое размещение пиктограмм, указав стиль LVS_AUTOARRANGE. Без этого стиля пользователю придется работать с полосой просмотра (Scrollbar), что не всегда удобно.

Иногда необходимо заблокировать возможность изменения размеров окна просмотра, исключив стиль WS_BORDER. Например, вы можете создать окно просмотра фиксированного размера, расположенное в диалоговой панели. В этом случае вы не должны указывать стиль LVS_NOSCROLL, так как иначе пользователь не получит доступа ко всем элементам списка.


Содержание раздела