Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI-ekz_shpory.docx
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
185 Кб
Скачать
☆

3. Окна списка

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

А) Создание:

hListBox = CreateWindow("listbox", NULL,WS_CHILD | WS_VISIBLE | LBS_STANDARD |

LBS_WANTKEYBOARDINPUT, 30,30,200,100, hwnd, (HMENU) ID_LIST, hInst, NULL);

2 – имя/заголовок (должен быть NULL)

8 – идентификатор родит окна, куда будет поступать сообщение WM_COMMAND

Б) Стили окон списка:

LBS_EXTENDEDSEL – Можно выделять несколько рядом расположенных строк

LBS_MULTICOLUMN – для мультиколоночного списка

LBS_MULTIPLESEL – выделять несколько любых строк

LBS_SORT – строки списка будут отсортированы и другие (LBS_NOINTEGRALHEIGHT, LBS_NOREDROW, LBS_OWNERDRAWFIXED)

Список посылает в родительское окно сообщение WM_COMMAND. wParam этого сообщения содержит идентификатор списка, Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.

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

LBN_KILLFOCUS – потерян фокус ввода

LBN_SELCHANGE – польз-ль выбрал другую строку.

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

Для управления списком приложение посылает ему сообщения, вызывая функцию SendMessage.

LB_ADDSTRING – добавление строки в список LB_DELETESTRING

LB_DIR – заполнение списка именами файлов и каталогов в текущем каталоге

LB_FINDSTRING – поиск строки в списке.

  1. Комбинированные списки, окна редактирования и статические текстовые объекты.

1. Комбинированные списки

Этот орган является комбинацией списка и однострочного редактора текста. Например, выбор размера шрифта.

А) Создание:

hComboBox = CreateWindow("ComboBox", NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL

|CBS_AUTOHSCROLL|CBS_SIMPLE,30,30,200,200,hwnd,(HMENU) ID_LIST, hInst, NULL);

2 – заголовок (должен быть NULL)

8 – идентификатор родительского окна, куда будет поступать сообщение WM_COMMAND

9 – идентификатор списка

Б) Стили:

CBS_DROPDOWN – список невидим, пока пользователь не щелкнет по пиктограмме.

CBS_DROPDOWNLIST – аналогично, но нет возможности редактирования

CBS_AUTOHSCROLL – автоматическая свертка по горизонтали

СBS_SIMPLE – всегда виден, под окном однострочного редактора.

В) Коды извещения

Список "combobox" посылает в родительское окно сообщение WM_COMMAND. Параметр wParam этого сообщения содержит идентификатор списка. Младшее слово параметра lParam содержит идентификатор окна списка, а старшее - код извещения.

CBN_CLOSEUP – список стал невидимым

CBN_DROPDOWN – стал видимым

CBN_KILLFOCUS (SETFOCUS) – теряет фокус ввода (приобрел)

CBN_DBLCLK – Двойной щелчок левой клавишей мыши по строке списка, имеющего стиль CBS_SIMPLE.

А так же CBN_EDITCHANGE, CBN_EDITUPDATE, CBN_SELENDOK (выбор строки в списке) CBN_SELCHANGE (изменил выбор)

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

Функция SendMessage, посылающая сообщения списку "combobox", возвращает значение, которое зависит от выполняемой функции или коды ошибок.

CB_ADDSTRING - Добавление строки в список.

CB_DELETESTRING – Удаление строки из списка.

CB_DIR Заполнение списка именами файлов и каталогов, расположенных в текущем каталоге, а также именами дисков.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]