Сообщения для списка
Для управления списком приложение посылает ему сообщения, вызывая функцию SendMessage. Эта функция возвращает значение, которое зависит от выполняемой функции или коды ошибок LB_ERRSPACE (ошибка при получении дополнительной памяти), LB_ERR (затребованная операция не может быть выполнена).
В файле windows.h определены сообщения, специально предназначенные для работы со списком. Символические имена этих сообщений имеют префикс LB_. Приведем список таких сообщений.
LB_ADDSTRING
Добавление строки в список.
Параметры:
wParam = 0;
lParam = (LPARAM)(LPCSTR)lpszStr;
lpszStr - указатель на добавляемую строку.
Возвращаемое значение:
Номер строки в списке (первая строка имеет номер 0), или код ошибки.
LB_DELETESTRING
Удаление строки из списка.
Параметры:
wParam = (WPARAM)nIndex;
lParam = 0L;
nIndex - номер удаляемой строки. Первая строка имеет номер 0.
Возвращаемое значение:
Количество строк, оставшихся в списке, или код ошибки.
LB_DIR
Заполнение списка именами файлов и каталогов, расположенных в текущем каталоге, а также именами дисков.
Параметры:
wParam = (WPARAM)(UINT)uAttr;
lParam = (LPARAM)(LPCSTR)lpszFileSpec;
uAttr - атрибуты файлов;
lpszFileSpec - указатель на строку, содержащую имя файла или шаблон имени файла.
Возвращаемое значение:
Номер последнего имени файла, добавленного в список, или код ошибки.
LB_FINDSTRING
Поиск строки в списке, имеющей заданный префикс. Будет найдена строка, начальная часть которой совпадает с текстовой строкой, определенной в качестве префикса.
Параметры:
wParam = (WPARAM)nIndexStart;
lParam = (LPARAM)(LPCSTR)lpszStr;
nIndexStart - номер строки, с которой начинается поиск;lpszStr- адрес префикса строки, которую нужно найти в списке.
Возвращаемое значение:
Номер найденной строки, или код ошибки (если строки в списке нет).
Создание списка COMBOBOX
Для того чтобы создать список класса "combobox" приложение должно вызвать функцию CreateWindow, передав в качестве первого параметра указатель на строку "combobox":
hComboBox = CreateWindow("ComboBox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_AUTOHSCROLL | CBS_SIMPLE, 30, 30, 200, 200, hwnd, (HMENU) ID_LIST, hInst, NULL);
Второй параметр функции должен быть указан как NULL.
При создании списка "combobox" указываются специальные стили списка, символические имена которых имеют префикс CBS_.
Остальные параметры функции CreateWindow указываются так же, как и для списка класса "listbox".
Стили списка
Приведем список стилей, которые используются для создания органа управления класса "combobox". Многие из этих стилей вам уже знакомы.
Имя стиля | Описание |
CBS_AUTOHSCROLL | Выполняется автоматическая свертка текста по горизонтали в окне редактирования |
СBS_DISABLENOSCROLL | Если в одноколоночном списке помещаются все строки, вертикальная полоса просмотра изображается в неактивном состоянии. Этот стиль можно указывать для Windows версии 3.1 и более поздних версий |
CBS_DROPDOWN | Список остается в невидимом состоянии до тех пор, пока пользователь не нажмет пиктограмму, специально предназначенную для отображения списка |
CBS_DROPDOWNLIST | Аналогично предыдущему, но однострочный текстовый редактор может быть использован только для отображения текста, но не для редактирования |
СBS_HASSTRINGS | Создание списка, содержащего строки, который рисуется родительским окном |
СBS_NOINTEGRALHEIGHT | Допустимо частичное отображение строк |
СBS_OEMCONVERT | При вводе символов в окне редактирования выполняется их преобразование из кодировки ANSI в OEM и обратно. Этот стиль используется только совместно со стилями CBS_SIMPLE и CBS_DROPDOWN |
СBS_OWNERDRAWFIXED | Создается список, который рисуется родительским окном, причем все элементы в списке имеют одинаковую высоту |
СBS_OWNERDRAWVARIABLE | Аналогично предыдущему, но элементы списка могут иметь разную высоту |
СBS_SIMPLE | Создается список, который всегда виден и расположен под окном однострочного редактора текста, содержащего выделенную в списке строку. |
СBS_SORT | Строки списка будут отсортированы |
Коды извещения
Список "combobox" посылает в родительское окно сообщение WM_COMMAND. Параметр wParam этого сообщения содержит идентификатор списка. Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.
Приведем список кодов извещения, поступающих от органа управления класса "combobox".
Код извещения | Описание |
CBN_CLOSEUP | Список исчез (стал невидим) |
CBN_DBLCLK | Двойной щелчок левой клавишей мыши по строке списка, имеющего стиль CBS_SIMPLE |
CBN_DROPDOWN | Список стал видимым |
CBN_EDITCHANGE | Пользователь изменил содержимое окна редактирования, причем изменения уже отображены |
CBN_EDITUPDATE | Пользователь изменил содержимое окна редактирования, изменения еще не отображены |
CBN_ERRSPACE | Ошибка при попытке заказать дополнительную память |
CBN_KILLFOCUS | Список теряет фокус ввода |
CBN_SELENDCANCEL | Пользователь отменил выбор в списке. |
CBN_SELENDOK | Пользователь выбрал строку в списке. |
CBN_SELCHANGE | Изменился номер выбранной строки (т. е. пользователь выбрал другую строку) |
CBN_SETFOCUS | Список получает фокус ввода |
Дата добавления: 2016-07-22; просмотров: 1452;