Блок (окно) списка - это управляющий элемент, содержащий
прямоугольную область со списком текстовых строк. Обычно пользо-
ватель может просматривать то, что выводится в списке, и выбирать
один или более элементов. Блок списка посылает порождающему окну
сообщение о выборе элемента (элементов).
Блоки списка часто выводятся в диалоговом окне File Open.
Files:
+-----------------------+
¦katznjmr.ico ¦^¦
¦kitty.ico +-¦
¦ledger2.ico ¦_¦
¦ledger3.ico ¦_¦
¦ledger4.ico ¦_¦
¦lgricons.ico ¦_¦
¦mouse.ico +-¦
¦netmail.ico ¦v¦
+-----------------------+
Рис. 4.17 Блок списка в диалоговом окне File Open
Если размер списка элементов превышает длину блока списка,
вы можете добавить в блок списка полосу прокрутки.
Кроме других описанных ранее параметров диалоговое окно List
Box Style имеет параметры Owner Drawing и List Box.
Параметр Owner Drawing (Отображение пользователя) определя-
ет, будет ли содержащийся в блоке список отображаться блоком
списка или прикладной программой. Выберите атрибуты из следующей
таблицы:
Параметры отображения пользователя Таблица 4.14
+---------------------------------------------------------------+
¦ Параметры ¦ Описание ¦
+---------------------+-----------------------------------------¦
¦ Not Owner ¦ Отображением списка управляет блок¦
¦ Draw (не поль- ¦ списка. ¦
¦ зовательское ¦ ¦
¦ отображение ¦ ¦
+---------------------+-----------------------------------------¦
¦ Fixed ¦ Прикладная программа отображает блок¦
¦ (фиксированный) ¦ списка в ответ на сообщение WM_DRAWITEM.¦
¦ ¦ Прикладная программа отвечает также на¦
¦ ¦ сообщение WM_COMPAREITEM, WM_DELETEITEM,¦
¦ ¦ WM_MEASUREITEM. ¦
¦ ¦ ¦
¦ ¦ Блок списка управляет передачей сообще-¦
¦ ¦ ния WM_MEASUREITEM прикладной программе¦
¦ ¦ только когда блок списка первоначально¦
¦ ¦ отображается, фиксируя высоту элемента¦
¦ ¦ блока списка. ¦
+---------------------+-----------------------------------------¦
¦ Variable ¦ Прикладная программа отображает блок¦
¦ (переменный) ¦ списка в ответ на сообщение WM_DRAWITEM.¦
¦ ¦ Прикладная программа отвечает также на¦
¦ ¦ сообщение WM_COMPAREITEM, WM_DELETEITEM,¦
¦ ¦ WM_MEASUREITEM. ¦
¦ ¦ ¦
¦ ¦ Блок списка управляет передачей сообще-¦
¦ ¦ ния WM_MEASUREITEM прикладной программе¦
¦ ¦ для каждого элемента списка. Каждый эле-¦
¦ ¦ мент списка может иметь различную высо-¦
¦ ¦ ту. ¦
+---------------------+-----------------------------------------¦
¦ Has Strings ¦ Если вы выбрали параметр Fixed или¦
¦ (имеет строки) ¦ Variable, блок списка сохраняет текст¦
¦ ¦ каждого элемента списка в сообщении¦
¦ ¦ LB_INSERTSTRING или LB_ADDSTRING. Блок¦
¦ ¦ списка может также получать элементы¦
¦ ¦ списка из сообщения LB_GETTEXT. ¦
+---------------------------------------------------------------+
Параметры блока списка позволяют вам выполнить его дальней-
шее определение. Выберите один или более параметров из следующей
таблицы:
Параметры блока списка Таблица 4.15
+---------------------------------------------------------------+
¦ Параметр ¦ Описание ¦
+------------------------+--------------------------------------¦
¦ Notify ¦ Когда пользователь щелкает на элемен-¦
¦ (уведомление) ¦ те списка кнопкой "мыши", посылает¦
¦ ¦ порождающему окну сообщение ввода (по¦
¦ ¦ умолчанию). ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Sort ¦ Сортирует список в алфавитном поряд-¦
¦ (сортировка) ¦ ке. ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Multiple Select ¦ Позволяет пользователю выбирать более¦
¦ (множественный ¦ одно элемента за один раз. Пользова-¦
¦ выбор) ¦ тель может также включать и выключать¦
¦ ¦ отдельные элементы. ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Don't Redraw ¦ Предотвращает повторное отображение¦
¦ (не нужно повтор- ¦ блока списка при его изменении. ¦
¦ ного отображения) ¦ ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Tab Stops ¦ Организует информацию в блоке списка¦
¦ (позиции табуляции) ¦ по столбцам. По умолчанию ширина¦
¦ ¦ столбца равна 32 диалоговым единицам¦
¦ ¦ или 8 символам. Вы можете для форма-¦
¦ ¦ тирования текста использовать символы¦
¦ ¦ Tab (\x09). ¦
¦ ¦ ¦
¦ ¦ (Если вы хотите изменить ширину¦
¦ ¦ столбца, прикладная программа уста-¦
¦ ¦ навливает свои собственные позиции¦
¦ ¦ табуляции с помощью сообщения¦
¦ ¦ LB_SETTABSTOPS.) ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Integral Height ¦ Приводит к тому, что во время выпол-¦
¦ (Полная высота) ¦ нения высота блока списка будет из-¦
¦ ¦ меняться - область пользователя будет¦
¦ ¦ достаточно велика для полного вывода¦
¦ ¦ элементов (по умолчанию). ¦
¦ ¦ ¦
¦ ¦ Если параметр Integral Height уста-¦
¦ ¦ новлен, и размер блока списка нужно¦
¦ ¦ изменить, чтобы вывести элементы пол-¦
¦ ¦ ностью, блок списка уменьшается в¦
¦ ¦ размере. Например, во время выполне-¦
¦ ¦ ния полностью выводятся три элемента,¦
¦ ¦ но еще один элемент вмещается не пол-¦
¦ ¦ ностью, то блок списка уменьшится,¦
¦ ¦ так что выводиться будут только три¦
¦ ¦ элемента. ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Multi Column ¦ Позволяет пользователю горизонтально¦
¦ (несколько столбцов) ¦ прокручивать блок списка для работы с¦
¦ ¦ несколькими столбцами. ¦
¦ ¦ ¦
¦ ¦ Если вы включите данный параметр,¦
¦ ¦ прикладная программа должна передать¦
¦ ¦ сообщение LB_SETCOLWIDTH, чтобы уста-¦
¦ ¦ новить ширину столбца в элементах¦
¦ ¦ изображения. ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Pass Keyboard Input ¦ Передает то, что пользователь набира-¦
¦ (передача ввода с ¦ ет на клавиатуре. ¦
¦ клавиатуры) ¦ ¦
¦ ¦ ¦
+------------------------+--------------------------------------¦
¦ Extend Select ¦ Когда данный параметр используется¦
¦ (расширенный выбор) ¦ для блока списка с множественным вы-¦
¦ ¦ бором, данный атрибут модифицирует¦
¦ ¦ характер выделения пользователем бо-¦
¦ ¦ лее одного элемента в списке. ¦
¦ ¦ ¦
+---------------------------------------------------------------+