Программирование для IBM OS2


Изменение системного меню


В некоторых случаях приложения изменяют системное меню, доступное пользователю через пиктограмму, расположенную в верхнем левом углу главного окна приложения. Создавая простейшее приложение, вы можете организовать интерфейс с пользователем при помощи нескольких строк, добавленных к системному меню.

Процедура добавления строк к системному меню достаточно проста, хотя и состоит из нескольких шагов.

Прежде всего вы должны определить идентификатор окна системного меню. Это можно сделать при помощи функций WinWindowFromID и WinQueryWindow в обработчике сообщения WM_CREATE , например, так:

HWND hwndSystemMenu; hwndSystemMenu = WinWindowFromID ( WinQueryWindow (hWnd, QW_PARENT ), FID_SYSMENU );

В качестве первого параметра функции WinQueryWindow мы передали идентификатор окна Client Window , который передается в функцию окна. Второй параметр, равный константе QW_PARENT , сообщает функции WinQueryWindow о необходимости вернуть идентификатор окна, которое является родительским по отношению к окну hWnd. При этом мы получим идентификатор окна Frame Window , которое, очевидно, является родительским для окна системного меню.

Приведем прототип для функции WinQueryWindow :

HWND WinQueryWindow ( HWND hwnd, // идентификатор окна LONG lCode); // тип информации об окне

В зависимости от значения параметра lCode функция возвращает различную информацию об окне. Вы можете использовать для параметра lCode одну из следующих констант:

Константа Информация, возвращаемая функцией
QW_BOTTOM Дочернее окно самого нижнего уровня
QW_FRAMEOWNER Возвращается идентификатор окна-владельца для окна hwnd. Это окно имеет такое же родительское окно, что и окно hwnd
QW_NEXT Идентификатор окна, расположенного под окном, заданным параметром hwnd
QW_NEXTTOP Идентификатор следующего окна в иерархии окна-владельца
QW_OWNER Идентификатор окна-владельца
QW_PARENT Идентификатор родительского окна
QW_PREV Аналогично, но для окна, расположенного над заданным
QW_PREVTOP Идентификатор предыдущего окна в иерархии окна-владельца
QW_TOP Дочернее окно самого верхнего уровня
<


Начало  Назад  Вперед