Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП02_Органы управления.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
576 Кб
Скачать

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

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

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

hComboBox = CreateWindow("ComboBox", NULL,

WS_CHILD | WS.VISIBLE | WS_VSCROLL |

CBS_AUTOHSCROLL | CBS_SIMPLE,

30, 30, 200, 200, hwnd,

(HMENU) ID_COMBO, hInstance, NULL);

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

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

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

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

Описание

CBNCLOSEUP

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

CBNDBLCLK

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

CBNDROPDOWN

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

CBNEDITCHANGE

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

CBNEDITUPDATE

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

CBNERRSPACE

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

CBNKILLFOCUS

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

CBNSELENDCANCEL

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

CBNSELENDOK

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

CBN_SELCHANGE

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

CBNjSETFOCUS

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

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

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

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

Пояснение

CBADDSTRING, 0 и (LPARAM)lpszStr

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

CBDELETESTRING (WPARAM)nIndex и 0L

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

CBDIR, (WPARAM)(UINT)uAttr и (LPARAM) lpszFileSpec;

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

CBFINDSTRING, (WPARAM)nIndexStart и (LPARAM) (LPCSTR)lpszStr

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

CBGETCOUNT, 0 и 0L

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

CBGETCURSEL, 0 и 0L

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

СВGETDROPPEDSTATE, 0 и 0L

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

СВGETLBTEXT, (WPARAM)nIndex и (LPARAM)(int FAR *)lрВ

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

CBINSERTSTRING, (WPARAM)nIndex и (LPARAM)(int FAR *)lрВ

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

СВLIMITTEXT, (WPARAM)cCmax и 0L

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

СВRESETCONTENT, 0 и 0L

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

СВSELECTSTRING, (WPARAM)nIndexStart и (LPARAM)(int FAR *)lрВ

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

СВSETCURSEL, (WPARAM)nIndex и 0L

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

СВSHOWDROPDOWN, (WPARAM)(BOOL)fExtended и 0L

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