Контрольная работа: Сообщения меню приложения Windows
Параметры:
hWnd - хэндл окна, которому принадлежит главное меню.
Возвращаемое значение: при успешном выполнении - дескриптор меню, иначе - NULL.
Функция GetSubMenu () возвращает дескриптор всплывающего меню, которое расположено в позиции nPos указанного меню hMenu. Причем первому временному меню в hMenu соответствует нулевое значение параметра nPos. Если функция GetSubMenu () вернула значение NULL, то hMenu в позиции nPos не содержит временное меню:
HMENU GetSubMenu (HMENU hMenu, int nPos)
Параметры:
hMenu - хэндл меню.
nPos - позиция требуемого временного меню.
Возвращаемое значение: при успешном выполнении - дескриптор меню, иначе - NULL.
Плавающее меню создают обычным способом, но не вставляют в другое меню. Для отображения и выбора строк этого меню вызывают функцию TrackPopupMenu ().
Функция TrackPopupMenu () предназначена для вывода на экран плавающего меню и создания своего собственного цикла обработки сообщений, завершающего работу после выбора строки. Она не возвращает управление до тех пор, пока работа с меню не будет завершена выбором строки или отказом от выбора. Синтаксис функции:
BOOL TrackPopupMenu (HMENU hMenu, UINT uFlags, int x, int y, int nReserved, HWND hwnd, CONST RECT *prcRect)
Параметры:
hMenu - дескриптор отображаемого плавающего меню. Он может быть создан функцией CreatePopupMenu () или получен с помощью функции GetSubMenu ().
uFlags - комбинация флагов, которые задают функциональные параметры плавающего меню.
х - координата по горизонтали от левого края экрана.
у - координата по вертикали от верхнего края экрана.
nReserved - зарезервированный параметр, должен быть всегда равен нулю.
hwnd - дескриптор уже существующего окна-владельца, которое получит сообщения от меню. Сообщение WM_COMMAND окно получит только после завершения работы функции TrackPopupMenu ().
prcRect - указатель на прямоугольную область, находясь в пределах которой можно работать с меню. Если сделать щелчок мышью за пределами этого прямоугольника, плавающее меню исчезнет. Если prcRect=NULL, то эта область ограничена прямоугольной рамкой плавающего меню.
Возвращаемое значение: в случае успешного выполнения функция возвращает ненулевое значение. Если в параметре uFlags задано TPM_RETURNCMD, то возвращаемое значение равно идентификатору команды выбранной строки. Если элемент не выбран, возвращаемое значение - нуль.
Следующие константы uFlags задают способ размещения меню по горизонтали относительно параметра х:
Константа | Пояснение |
ТРМ_CENTERALIGN | Центр меню по горизонтали совпадает с х |
ТРМ_LEFTALIGN | Левый край меню совпадает с х |
TPM_RIGHTALIGN | Правый край меню совпадает с х |
Следующие константы uFlags задают способ размещения меню по вертикали относительно параметра у:
Константа | Пояснение |
TPM_BOTTOMALIGN | Нижний край меню совпадает с у |
TPM_TOPALIGN | Верхний край меню совпадает с у |
TPM_VCENTERALIGN | Центр меню по вертикали совпадает с у |
Следующие константы uFlags задают способ выбора строк меню без указания окна-владельца для меню:
Константа | Пояснение |
ТРМ_NONOTIFY | Не посылать сообщения о выборе строки |
TPM_RETURNCMD | Возвращать идентификатор выбранной команды |
Следующие константы uFlags задают кнопку мыши, которую прослеживает плавающее меню:
Константа | Пояснение |
ТРМ_LEFTBUTTON | Прослеживает левую кнопку мыши |
TPM_RIGHTBUTTON | Прослеживает правую кнопку мыши |