Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
каркас.doc
Скачиваний:
59
Добавлен:
03.06.2015
Размер:
1.6 Mб
Скачать

5.6. Основы работы со списками

Продолжая исследование свойств диалога, добавим в диалог из предыдущего примера еще один элемент управления. Одним из часто используемых элементов управления является список (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