Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Окно-список

Окно-список представляет собой прямоугольник, внутри которого находится листаемый список из текстовых строк. Пользователь может выделять строки списка при помощи курсора. Окно-список может использоваться для просмотра и выбора элементов древовидного списка , например имен файлов на диске.

Программа может добавлять и удалять отдельные строки списка, передавая специальные сообщения функции окна-списка. Эти сообщения будут описаны ниже. Окно-список, в свою очередь, передает сообщение WM_COMMAND функции родительского окна при выборе пользователем элемента списка с помощью клавиш PageUp, PageDown, клавиш управления курсором или мышью.

Как и все органы управления, описанные выше, окно-список является дочерним окном. Для создания окна-списка необходимо воспользоваться предопределенным классом окна «listbox». По умолчанию окно-список не передает сообщения WM_COMMAND при выборе элемента списка. Чтобы сообщение передавалось, добавьте идентификатор LBS_NOTIFY к типам окна-списка. Если требуется, чтобы элементы списка изображались в алфавитном порядке, при создании окна указывается флаг LBS_SORT. По умолчанию окно-список отображается без рамки и без вертикальной полосы просмотра. Чтобы отобразить рамку и полосу просмотра, используйте идентификаторы WS_BORDER и WS_VSCROLL. Можно использовать также типы окон WS_SIZEBOX и WS_CAPTION, описанные выше.

Приведем полный перечень флагов окна-списка:

LBS_EXTENDEDSEL

В оке-списке, пользуясь клавишами Shift, мышью или другими комбинациями клавиш, можно делать множественный выбор.

LBS_HASSTRINGS

Определяет «пользовательское» окно-список, т.е. список, который может содержать произвольные строки. Функция окна-списка поддерживает это окно (управляет памятью под строки, скроллингом строк и т.п.). Приложение может заполнять строками окно-список и извлекать из него строки при помощи сообщения LB_GETTEXT.

LBS_MULTICOLUMN

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

LBS_MULTIPLESEL

Окно-список множественного выбора: нажатием на клавишу мыши или пробел состояние элемента списка меняется с выбранного на невыбранное и наоборот вне зависимости от состояния других элементов.

LBS_NOINTEGRALHEIGHT

Размер окна-списка в точности равен размеру, указанному при создании окна-списка (обычно Windows слегка подгоняет размер окна-списка так, чтобы отображалось целое число элементов).

LBS_NOREDRAW

Изменения, произведенные с самим списком, не отражаются автоматически в окне. Это состояние окна-списка весьма нетипично; оно может быть сброшено в любой момент посылкой сообщения WM_SETREDRAW.

LBS_NOTIFY

Родительское окно получает информацию о любом действии пользователя над списком.

LBS_OWNERDRAWFIXED

Отображение содержимого окна возлагается на функцию родительского окна; элементы окна-списка должны иметь одинаковую высоту.

LBS_OWNERDRAWVARIABLE

Отображение содержимого окна возлагается на функцию родительского окна; элементы окна-списка могут иметь разную высоту.

LBS_SORT

Строки-элементы окна-списка автоматически сортируются по алфавиту.

LBS_STANDART

Наиболее часто используемый стиль; является комбинацией флагов WS_BORDER, WS_VSCROLL, LBS_NOTIFY и LBS_SORT.

LBS_USETABSTOPS

При помещении в окно-список, символы табуляции заменяются на пробелы. По умолчанию один символ табуляции заменяется на 32 «диалоговые единицы». «Диалоговые единицы» исчисляются по высоте и ширине системного шрифта. Определить, чему равна диалоговая единица, можно при помощи функции GetDialogBaseUnits.

LBS_WANTKEYBOARDINPUT

Функция, ответственная за отрисовку окна-списка. Когда окно-список имеет фокус ввода, получает сообщения WM_VKEYTOITEM или WM_CHARTOITEM при любом нажатии клавиш. Этот стиль используется для сложной нестандартной обработки списков.