Стандартные органы управления
Стандартные органы управления представляют собой дочерние окна созданные на основе предопределенных в Windows классов окон. Для создания органа управления используется функция CreateWindow (см. главу 1). В качестве имени класса окна для этой функции необходимо указать имя одного из предопределенных классов. Заголовок окна при этом рассматривается как строка, которая будет написана на поверхности органа управления. Для органа управления, на котором отсутствует надпись, соответсвующий параметр функции CreateWindow должен быть указан как NULL. Стиль окна задается как комбинация стилей WS_CHILD, WS_VISIBLE и стилей, определенных для соответствующих органов управления. Естественно, нельзя комбинировать взаимоисключающие стили. Координаты, высота и ширина органа управления имеют тот же смысл, что и для произвольного окна. Параметр hwndParent
28
должен содержать идентификатор окна, на поверхности которого создается орган управления. В качестве параметра hMenu следует указать определенную Вами через #define константу, которая будет служить идентификатором органа управления. Остальные параметры функции CreateWindowимеют обычный смысл.
Как правило, органы управления создаются при обработке функцией окна сообщения WM_CREATE. Вот как будет выглядеть создание обычной кнопки размером 40 х 60 пикселов с надписью “Кнопка” в точке с координатами (50,60):
# define IDB_BUTTON1 1
. . .
case WM_CREATE:
{ . . .
CreateWindow(“button”, “Кнопка”, WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,
50, 60, 40, 60, hwnd, (HMENU) IDB_BUTTON1, hInstance, NULL);
. . .
return0};
Когда пользователь совершает какое-то действие над органом управления, в функцию родительского окна поступает сообщение WM_COMMAND. Параметр lParam этого сообщения содержит идентификатор окна органа управления типа HWND, который возвращается функцией CreateWindow при создании органа управления. Младшее слово параметра wParamсодержит уже упоминавшийся идентификатор органа управления. Именно по этому идентификатору функция родительского окна определяет, от какого именно органа управления получено сообщение. Старшее слово wParamсодержит код извещения, специфичный для каждого органа управления и определяющий, о чем собственно уведомляет родительское окно орган управления. Таким образом, для работы с органами управления родительскому окну достаточно обрабатывать сообщение WM_COMMAND. Обработчик этого сообщения должен вернуть нулевое значение.
предыдущаяследующая