Функция TrackPopupMenuEx

Функция TrackPopupMenuEx показывает на экране контекстное меню в заданном месте и устанавливает подбор пунктов меню. Контекстное меню может появиться в любом месте экрана.

Синтаксис

BOOL TrackPopupMenuEx(
    HMENU hmenu,
    UINT fuFlags,
    int x,
    int y,
    HWND hwnd,
    LPTPMPARAMS lptpm
); 

Параметры

hmenu

[in] Дескриптор контекстного меню, которое показывается на экране. Этот дескриптор может быть получен путем вызова CreatePopupMenu, чтобы создать новое контекстное меню или путем вызова GetSubMenu, чтобы извлечь дескриптор подменю, связанный с существующим пунктом меню.

fuFlags

[in] Определяет параметры функции.

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

Значение Предназначение
TPM_CENTERALIGN Если этот флажок установлен, функция помещает контекстное меню по центру горизонтали, относительно координаты, определяемой параметром x
TPM_LEFTALIGN Если этот флажок установлен, функция помещает контекстное меню так, чтобы его левая сторона была выровнена по координате, определяемой параметром x
TPM_RIGHTALIGN Устанавливает контекстное меню так, чтобы правая сторона была выровнена по координате, определяемой параметром x

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

Значение Предназначение
TPM_BOTTOMALIGN Если этот флажок установлен, функция располагает контекстное меню так, чтобы его нижняя сторона выровнялась по координате, заданной параметром y
TPM_TOPALIGN Если этот флажок установлен, функция располагает контекстное меню так, чтобы его верхняя сторона выровнялась по координате, заданной параметром y
TPM_VCENTERALIGN Если этот флажок установлен, функция выравнивает по центру вертикали контекстное меню, относительно координаты, заданной параметром y
Используйте ниже следующее флажки, чтобы обусловить выбор пользователя, без вызова родительского окна для меню.
Значение Предназначение
TPM_NONOTIFY
Если этот флажок установлен, функция не отправляет уведомительные сообщения, когда пользователь щелкает кнопкой мыши по пункту меню. 
TPM_RETURNCMD
Если этот флажок установлен, функция возвращает значение идентификатора пункта меню, выбранного пользователем. 
Используйте один из следующих  флажков, чтобы определить, какой кнопкой мыши установится контекстное меню:
Значение Предназначение
TPM_LEFTBUTTON Если этот флажок установлен, пользователь  может выбрать пункт меню только левой кнопкой мыши. 
TPM_RIGHTBUTTON
Если этот флажок установлен, пользователь  может выбрать пункт меню и левой, и правой кнопкой мыши. 
Windows 98/Me, Windows 2000/XP: Используйте любую разумную комбинацию ниже следующих флажков, чтобы изменить анимацию меню. Например, выбирая флажок горизонтали и вертикали  Вы можете достигнуть диагональной анимации.
 Значение Предназначение
TPM_HORNEGANIMATION
Анимирует меню справа налево.
TPM_HORPOSANIMATION
Анимирует меню слева направо. 
TPM_NOANIMATION
Показывает меню без анимации. 
TPM_VERNEGANIMATION
Анимирует меню снизу вверх.
TPM_VERPOSANIMATION
Анимирует меню сверху вниз . 
Чтобы произошла какая-либо анимация,  функция SystemParametersInfo должна установить флажок SPI_SETMENUANIMATION. К тому же, все TPM_*ANIMATION флажки, кроме TPM_NOANIMATION, игнорируются, если включена плавная анимация меню. См. флажок SPI_GETMENUFADE в функции SystemParametersInfo.
Windows 98/Me, Windows 2000/XP: Используйте флажок TPM_RECURSE, чтобы показать на экране меню, когда другое меню еще не отображено. Он предназначается, чтобы поддержать контекстные меню без основного меню.
Используйте один из ниже следующих флажков, чтобы задать, согласованное выравнивание по горизонтали или  по вертикали.
 Значение Предназначение
TPM_HORIZONTAL
Если меню нельзя вывести на экран в заданном месте, не перекрывая исключенный прямоугольник, система пробует разместить затребованное горизонтальное выравнивание перед затребованным выравниванием по вертикали. 
TPM_VERTICAL
Если меню нельзя вывести на экран в заданном месте, не перекрывая исключенный прямоугольник, система пробует разместить затребованное выравнивание по вертикали перед затребованным горизонтальным выравниванием. 

Исключенный прямоугольник - это часть экрана, которую меню не должно перекрывать; он определяется параметром lptpm.

Windows XP: Чтобы иметь ориентацию текста справа налево, используйте флажок TPM_LAYOUTRTL. По умолчанию, ориентация текста - слева направо.

x

[in] Определяет горизонтальное расположение контекстного меню, в экранной системе координат.

y

[in] Определяет вертикальное расположение контекстного меню, в экранной системе координат.

hwnd

[in] Дескриптор окна, которое владеет контекстным меню. Это окно принимает все сообщения от меню. Окно не получает сообщение WM_COMMAND от меню до тех пор, пока функция не возвратит значение. Если Вы устанавливаете в параметре fuFlags флажок TPM_NONOTIFY , функция не отправляет сообщения окну, идентифицированному hwnd. Тем не менее, Вы должны все же переправлять дескриптор окна в hwnd. Это может быть любой дескриптор окна  вашей прикладной программы.

lptpm

[in] Указатель на структуру TPMPARAMS,  устанавливающую область экрана меню, которая не должна перекрыться. Этим параметром может быть значение ПУСТО (NULL).

Возвращаемые значения

Если Вы в параметре fuFlags устанавливаете флажок TPM_RETURNCMD , возвращаемое значение - идентификатор пункта меню, который пользователь выбрал. 

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

Если Вы в параметре fuFlags не устанавливаете флажок TPM_RETURNCMD , величина возвращаемого значения - не нуль, если функция завершается успешно и нуль, если она завершается ошибкой. Чтобы получать дополнительные сведения об ошибке, вызовите GetLastError.

Замечания

Чтобы показать на экране контекстное меню для значка предупреждения, текущее окно должно быть приоритетным окном прежде, чем приложение вызовет функцию TrackPopupMenu или TrackPopupMenuEx. В противном случае, меню не будет исчезать, когда пользователь щелкает кнопкой мыши вне меню или вне окна, которое создавало меню (если оно видимо). 

Смотри также

Краткий обзор МенюCreatePopupMenuGetSubMenu, TPMPARAMSWM_COMMAND

Размещение и совместимость TrackPopupMenuEx

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 4.0 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

User32.lib

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz