函数参考


_GUICtrlMenu_TrackPopupMenu

在指定区域显示一个快捷菜单(弹出菜单)

#Include <GuiMenu.au3>
_GUICtrlMenu_TrackPopupMenu($hMenu, $hWnd[, $iX = -1[, $iY = -1[, $iAlignX = 1[, $iAlignY = 1[, $iNotify = 0[, $iButtons = 0]]]]]])

参数

$hMenu 要显示的快捷菜单的句柄
$hWnd 快捷菜单的所有者窗口句柄
$iX [可选参数] 指定弹出快捷菜单位置的水平坐标,如果为-1,
使用当前鼠标所在坐标.
$iY [可选参数] 指定弹出快捷菜单位置的垂直坐标,如果为-1,
使用当前鼠标所在坐标.
$iAlignX [可选参数] 指定如何定位菜单水平位置:
0 - 相对 $iX 值水平居中
1 - 相对 $iX 值的左侧
2 - 相对 $iX 值的右侧
$iAlignY [可选参数] 指定如何定位菜单垂直位置:
0 - 菜单底部与 $iY 值一致
1 - 菜单顶部与 $iY 值一致
2 - 相对 $iY 值垂直居中
$iNotify [可选参数] 使用无父窗口,以确定选择:
1 - 不发送通知消息
2 - 返回用户选择的菜单项标识符
$iButtons [可选参数] 鼠标选择状态:
0 - 用户只能使用鼠标左键选择菜单项目.
1 - 用户可以使用鼠标左键或者右键选择菜单项目.

返回值

成功: 如果 $iNotify 设置为 2, 则返回值是用户选择项目时的菜单项标识符;
如果用户取消或没有选择; 又或如果发生错误, 则返回值为 0;
如果 $inotify 未设置为2, 则返回值为 1.
失败: 返回 0

注意/说明

None.

相关

详情参考

在MSDN中搜索


示例/演示


#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Global Enum $idOpen = 1000, $idSave, $idInfo

_Main()

Func _Main()
    ; 创建 GUI
    GUICreate("Menu", 400, 300)
    GUISetState()

    ; 注册消息处理程序
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_CONTEXTMENU, "WM_CONTEXTMENU")

    ; 循环直到用户退出
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; 处理 WM_COMMAND 消息
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $ilParam
    Switch $iwParam
        Case $idOpen
            _WinAPI_ShowMsg("Open")
        Case $idSave
            _WinAPI_ShowMsg("Save")
        Case $idInfo
            _WinAPI_ShowMsg("Info")
    EndSwitch
EndFunc   ;==>WM_COMMAND

; 处理 WM_CONTEXTMENU 消息
Func WM_CONTEXTMENU($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $ilParam
    Local $hMenu

    $hMenu = _GUICtrlMenu_CreatePopup()
    _GUICtrlMenu_InsertMenuItem($hMenu, 0, "Open", $idOpen)
    _GUICtrlMenu_InsertMenuItem($hMenu, 1, "Save", $idSave)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0)
    _GUICtrlMenu_InsertMenuItem($hMenu, 3, "Info", $idInfo)
    _GUICtrlMenu_TrackPopupMenu($hMenu, $iwParam)
    _GUICtrlMenu_DestroyMenu($hMenu)
    Return True
EndFunc   ;==>WM_CONTEXTMENU