Дополнительно к стилям окна WS_CHILD и WS_VISIBLE при создании списка указываются специальные стили списка, символические имена которых имеют префикс LBS_.

Создание списка

Орган управления LISTBOX.

Кроме того, можно использовать извещения, посылаемые обычному органу управления EDIT.

Код извещения от органа управления Rich Edit передается в параметре lParam сообщения WM_NOTIFY.

Обработка извещений

С помощью сообщения EM_SETEVENTMASK приложение, создавшее орган управления Rich Edit, может определить, какие извещения должны поступать в родительское окно.

Для органа управления Rich Edit определены следующие коды извещений:

Код извещения Описание
EN_CORRECTTEXT Выполняется корректировка слова. Используется только для перьевого ввода
EN_DROPFILES Пользователь переместил в окно органа управления Rich Edit пиктограмму файла при помощи операции "drag and drop"
EN_IMECHANGE Используется только для азиатских языков
EN_MSGFILTER Извещение о событии, созданном мышью или клавиатурой
EN_PROTECTED Пользователь попытался отредактировать защищенный текст
EN_REQUESTRESIZE Изменились размеры окна органа управления Rich Edit
EN_SELCHANGE Произошли изменения в выделении фрагмента текста
EN_STOPNOUNDO Было выполнено действие, результаты которого нельзя восстановить с помощью сообщения EM_UNDO

 


Стандартным примером использования списков класса LISTBOX, COMBOBOX являются диалоговые панели "Open" и "Save As". Для организации списков Windows использует органы управления класса "listbox" и "combobox".

С помощью класса "listbox" можно создавать одноколоночные и многоколоночные списки, имеющие вертикальную (для одноколоночных списков) и горизонтальную (для многоколоночных списков) полосу просмотра. Родительское окно может само рисовать элементы списка, аналогично тому, как оно рисует кнопки.

Для создания списка приложение должно вызвать функцию CreateWindow, передав в качестве первого параметра указатель на строку "listbox":

hListBox = CreateWindow(_T("listbox"), NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD | LBS_WANTKEYBOARDINPUT, 30, 30, 200, 100, hwnd, (HMENU) ID_LIST, hInst, NULL);

 

Второй параметр функции должен быть указан как NULL.

Остальные параметры функции CreateWindow указываются так же, как и для других органов управления. Параметры с четвертого по седьмой используются для определения расположения и размеров списка. Восьмой параметр - идентификатор родительского окна, в функцию которого будет поступать сообщение WM_COMMAND. Девятый параметр определяет идентификатор списка. Десятый указывает идентификатор копии приложения. Последний параметр должен быть задан как NULL.