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


Плавающее меню - часть 2


Функция WinPopupMenu , при помощи которой выполняется отображение плавающего меню, имеет такой прототип:

BOOL WinPopupMenu ( HWND hwndParent, // родительское окно HWND hwndOwner, // окно-владелец HWND hwndMenu, // идентификатор плавающего меню LONG x, // координата X для отображения меню LONG y, // координата Y для отображения меню LONG idItem, // идентификатор строки меню, // которая будет выбрана по умолчанию ULONG fs); // дополнительные параметры

Через параметры hwndParent и hwndOwner этой функции необходимо передать, соответственно, идентификатор родительского окна и идентификатор окна-владельца. Последнее будет получать все извещающие сообщения от меню. Вы можете через оба этих параметра передать идентификатор главного окна вашего приложения Frame Window .

Параметр hwndMenu предназначен для передачи идентификатора отображаемого плавающего меню, загруженного ранее при помощи функции WinLoadMenu .

Через параметры x и y необходимо передать координаты, которые будут использованы для определения места отображения меню. Если плавающее меню отображается после щелчка левой или правой клавишей мыши, эти координаты имеет смысл сделать равными координатам курсора мыши в момент щелчка.

Параметр idItem используется в зависимости от значения дополнителных параметров fs. Дополнительные параметры указываются как комбинация следующих значений, которые можно объединять при помощи логической операции ИЛИ:

Значение Описание
PU_POSITIONONITEM Меню размещается таким образом, что строка меню, идентификатор которой указан при помощи параметра idItem, имеет координаты, заданные параметрами x и y
PU_HCONSTRAIN Меню размещается на экране таким образом, что оно полностью отображается по своей ширине
PU_VCONSTRAIN Аналогично предыдущему, но по высоте
PU_MOUSEBUTTON1DOWN Меню отображается, когда нажата левая клавиша мыши, и исчезает, когда пользователь отжимает левую клавишу мыши
PU_MOUSEBUTTON2DOWN Аналогично предыдущему, но для правой клавиши двухкнопочной мыши или средней клавиши трехкнопочной мыши
PU_MOUSEBUTTON3DOWN Аналогично предыдущему, но используется для правой клавиши трехклавишной мыши
PU_NONE Меню отображается без предварительного выбора какой-либо строки
PU_SELECTITEM Если дополнительно указано значение PU_NONE, при отображении меню выделяется строка с идентификатором, переданным через параметр idItem. Если же этот идентификатор соответствует вложенному меню, последнее отображается в раскрытом состоянии
PU_KEYBOARD Для работы с меню можно использовать клавиатуру
PU_MOUSEBUTTON1 Для работы с меню можно использовать левую клавишу мыши
PU_MOUSEBUTTON2 Для работы с меню можно использовать правую клавишу двухкнопочной мыши или среднюю клавишу трехкнопочной мыши
PU_MOUSEBUTTON3 Для работы с меню можно использовать правую клавишу трехкнопочной мыши

Если плавающее меню отображено, функция WinPopupMenu возвращает значение TRUE. При ошибке возвращается значение FALSE.




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