Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

П. 2.6. Комбинированный список

2.6.1. Создание комбинированного списка

Этот орган является комбинацией однострочного редактора текста и списка и создается на базе класса "Combobox". Комбинированный спи­сок создается так же, как и другие органы управления:

hComboBox = CreateWndow("ComboBox", NULL,

WS.CHILD | WS_VISIBLE | WS.VSCROLL | CBS.AUTOHSCROLL | CBS_SIMPLE,

30,30,200,200, hwnd, (HMENU) ID.COMBO, htnstance, NULL);

В стиле окон класса указывают символические имена с префиксом CBS_ (табл. 2.7).

2.6.2. Коды извещения

Комбинированный список посылает в функцию родительского окна сообщение WM_COMMAND. При этом младшее слово параметра wParam содержит идентификатор, а параметр IParam - дескриптор спи­ска. Старшее слово параметра wParam содержит код извещения. Приве­дем список некоторых кодов извещений:

Код извещения

Описание

CBN CLOSEUP

Список исчез (стал невидим)

CBN DBLCLK.

Двойной щелчок левой клавишей мыши по строке списка стиля CBS_SIMPLE

CBN DROPDOWN

Список стал видимым

CBN EDITCHANGE

Пользователь изменил содержимое окна редак­тирования и изменения отображены

CBNEDITUPDATE

Пользователь изменил содержимое окна ре­дактирования, изменения не отображены

CBN ERRSPACE

Ошибка выделения дополнительной памяти

CBN KILLFOCUS

Список теряет фокус ввода

CBNSELENDCANCEL

Пользователь отменил выбор в списке

CBNSELENDOK

Пользователь выбрал строку в списке

CBN _SELCHANGE

Изменился номер выбранной строки

CBN_SETFOCUS

Список получает фокус ввода

2.6.3. Сообщения для комбинированного списка

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

Сообщение и параметры

Пояснение

CB_ADDSTRING, 0 и (LPARAM)lpszStr

Добавить строку IpszStr в список. Воз­вращает номер строки в списке или код ошибки

CB_DELETESTRING (WPARAM)nIndex и OL

л

Удалить строку с номером nindex из списка. Возвращает количество остав­шихся в списке строк или код ошибки

CB_DIR, (WPARAM)(UINT)uAttr, (LPARAM) lpszFileSpec;

Заполнить список именами файлов с ат­рибутом uAttr- и шаблона IpszFileSpec, и каталогов в текущем каталоге, и име­нами дисков. Возвращает номер послед­него имени файла, добавленного в спи­сок, или код ошибки

CB_FINDSTRING, (WPARAM)nIndexStart (LPARAM)(LPCSTR)lpszStr

Начиная со строки с номером nIndexStart, искать строку с префиксом IpszStr. Возвращает номер найденной строки или код ошибки (если строки в списке нет)

CB_GETCOUNT, 0 и OL

Определить количество строк в списке. Возвращает количество строк в списке или код ошибки

CB_GETCURSEL, 0 и OL

Определить номер выделенной строки. Возвращает номер выделенной строки или код ошибки

СВ GETDROPPEDSTATE О и 0L,

Определить, находится список в види­мом или невидимом состоянии. Воз­вращает TRUE, если список виден, FALSE - если нет

СВ_GETLBTEXT, (WPARAM)nIndex и (LPARAM)(mtFAR*)lpB

Копировать текст строки с номером nhidex в буфер 1рВ. Возвращает длину строки в байтах или код ошибки

СВ INSERTSTRING, (WPARAM)nIndex и (LPARAM)(int FAR *)lpB

Вставка строки 1рВ в список под номе­ром nhidex. Возвращает номер позиции, в которую вставлена строка, или код ошибки

СВ_LIMITTEXT, (WPARAM)cCmax и OL

Определить сСтах как максимальна допустимое количество символов в окне редактирования. Возвращаемое значе­ние не используется

СВ_RESETCONTENT, О и ОL

Удалить все строки из списка. Возвра­щаемое значение не используется

СВ_SELECTSTRING, (WPARAM)nIndexStart и (LPARAM)(int FAR *)lpB

Начиная со строки с номером nIndexStart, найти и выделить строку с префиксом 1рВ. Возвращает номер найденной строки или код ошибки

СВ_SETCURSEL, (WPARAM)nIndex и OL

Выделить строку с номером nhidex. Ес­ли nhidex равно -1, выделение всех строк будет отменено. При этом функ­ция SendMessage вернет значение CBERR, что в данном случае не гово­рит об ошибке. Возвращает код ошибки (если значение nindex не равно -1)

СВ_SHOWDROPDOWN. (WPARAM)(BOOL)fExten ded и OL

Переключение списка в отображаемое или неотображаемое состояние. При fExtended=TRUE отображать, при FALSE - нет. Возвращаемое значение всегда не равно 0