Сообщения для списка


Для управления списком приложение посылает ему сообщения, вызывая функцию 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; просмотров: 1459;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.