Функция TrackPopupMenuEx

Declare Function TrackPopupMenuEx Lib "user32" (ByVal hMenu As Long, ByVal fuFlags As Long, ByVal x As Long, ByVal y As Long, ByVal hwnd As Long, lptpm As TPMPARAMS) As Long
TrackPopupMenuEx выводит всплывающее меню в заданной точке

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

Если fuFlags содержит флаг TPM_RETURNCMD, то функция возвращает идентификатор выбранного пункта меню. Если ничего не выбрано или произошла ошибка, то возвращается 0.

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

Параметры

hMenu
Дескриптор всплывающего меню
fuFlags
Комбинация флагов, определяющих позицию меню и другие возможности функции:
TPM_CENTERALIGN = &H4
Горизонтальная центровка меню относительно x
TPM_LEFTALIGN = &H0
Выравнивание по левому краю относительно x
TPM_RIGHTALIGN = &H8
Выравнивание по правому краю относительно x
TPM_BOTTOMALIGN = &H20
Выравнивание по нижнему краю относительно y
TPM_TOPALIGN = &H0
Выравнивание по верхнему краю отностительно y
TPM_VCENTERALIGN = &H10
Выравнивание по вертикали относительно y
TPM_NONOTIFY = &H80
Не посылать сообщение WM_COMMAND родительскому окну меню при выборе меню пользователем
TPM_RETURNCMD = &H100
TrackPopupMenuEx возвращает идентификатор пункта меню, выбранного пользователем
TPM_LEFTBUTTON = &H0
Выбор меню левой кнопкой (или клавиатурой)
TPM_RIGHTBUTTON = &H2
Выбор меню правой кнопкой (или клавиатурой)
TPM_HORIZONTAL = &H0
Если всплывающее меню не может быть показано в указанных координатах без перекрытия заданного прямоугольника, то меню сдвигается по вертикали, сохраняя горизонтальные координаты
TPM_VERTICAL = &H40
Если всплывающее меню не может быть показано в указанных координатах без перекрытия заданного прямоугольника, то меню сдвигается по горизонтали, сохраняя вертикальные координаты
x
Координата x, где выводится всплывающее меню относительно экрана
y
Координата y, где выводится всплывающее меню относительно экрана
hwnd
Дескриптор окна, которому принадлежит меню. Данное окно должно получать сообщение WM_COMMAND
lptpm
Указатель на структуру TPMPARAMS, задающую прямоугольник, который не должен закрываться в всплывающим меню

Пример

' Вызываем всплывающее меню
' при отпускании кнопки мыши
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim Pt As POINTAPI
    Dim ret As Long
    hMenu = CreatePopupMenu()
    AppendMenu hMenu, MF_STRING, 1, "Русский_Проект"
    AppendMenu hMenu, MF_GRAYED Or MF_DISABLED, 2, "Тест"
    AppendMenu hMenu, MF_SEPARATOR, 3, ByVal 0&
    AppendMenu hMenu, MF_CHECKED, 4, "Пример"
     GetCursorPos  Pt
    ret = TrackPopupMenuEx(hMenu, TPM_LEFTALIGN Or TPM_RETURNCMD Or TPM_RIGHTBUTTON, Pt.x, Pt.y, Me.HWnd, ByVal 0&)
    DestroyMenu hMenu
    Debug.Print ret
End Sub

Смотри также

TrackPopupMenu

Категория

Меню