Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Основы работы со списками
Продолжая исследование свойств диалога, добавим в диалог из предыдущего примера еще один элемент управления. Одним из часто используемых элементов управления является список (list box). Оператор задания списка LISTBOX имеет вид:
LISTBOX ID, X, Y, Width, Height[, стиль]
Здесь ID является идентификатором списка, координаты левого верхнего угла задаются значениями X и Y, а размеры – значениями Width и Height. Стиль определяет тип списка (используемые здесь значения приведены в табл. 5.1). Изменим определение диалога в файле Mydialog.rc, чтобы добавить список. Во-первых, добавим описание списка:
LISTBOX ID_LB1, 2, 10, 47, 28, LBS_NOTIFY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL|WS_TABSTOP
Далее добавим следующую кнопку:
PUSHBUTTON " Выбери фрукт", IDD_SELFRUIT, 2, 45, 50, 14, WS_GHILD | WS_VISIBLE | WS_TABSTOP
Наконец, изменим положение кнопок Красный и Зеленый так, чтобы начало кнопки Красный располагалось в точке 57, 45, а кнопки Зеленый – в точке 95, 45. После внесения изменений описание диалога должно выглядеть так:
MYDB DIALOG 18, 18, 142, 92 CAPTION " Первый диалог" STYLE DS_MODALFRAME|WS POPUP|WS_CAPTION|WS_SYSMENU { DEFPUSHBUTTON " Красный", IDD_RED, 57, 45, 36, 14, WS_CHILD|WS_VISIBLE|WSJTABSTOP PUSHBUTTON " Зеленый", IDD_GREEN, 95, 45, 36, 14, WS_CHILD|WS_VISIBLE|WS_TABSTOP PUSHBUTTON " Сброс", IDCANCEL, 52, 65, 37, 14, WS_CHILD|WS_VISIBLE|WS_TABSTOP PUSHBUTTON " Выбери фрукт", IDD_SELFRUIT, 2, 45, 50, 14, WS_CHILD|WS_VISIBLE|WS_TABSTOP LISTBOX ID_LB1, 2, 10, 47, 28, LBS_NOTIFY|WS_CHILD| WS_VISIBLE|WS_BORDER|WS_VSCROLL|WS_TABSTOP }
Необходимо также добавить макроимена в файл Mydialog.h:
#define IDD_SELFRUIT 105 #define ID_LB1 106
Здесь ID_LB1 – идентифицирует список, а IDD_SELFRUIT – кнопку Выбери фрукт, которые введены в диалог. При работе со списками применяются две основные операции. Вначале (при первом отображении диалога) следует проинициализировать список, то есть указать элементы, которые будут отображаться в списке (по умолчанию список вначале всегда пустой). После этого следует определить, как Ваша программа должна реагировать на действия пользователя – изменение текущего выбранного элемента списка и т.п. Списки могут генерировать различные сообщения. Мы будем использовать только одно: LBN_DBLCLK. Это сообщение генерируется в результате двойного щелчка мышью на одном из элементов списка и содержится в HIWORD(wParam), когда список передает в диалоговую функцию сообщение WM_COMMAND. (Список при этом должен иметь стиль LBS_NOTIFY – в числе прочих.) После того, как пользователь сделал выбор элемента двойным нажатием мыши, необходимо запросить список, какой именно элемент был выбран. В отличие от кнопки список является элементом управления, который не только генерирует сообщения, но и получает их. Существуют несколько типов сообщений, которые можно передавать списку. В нашем примере будем использоваться только два, которые приведены в таблице 5.2.
Таблица 5.1
|