找回密码
 加入
搜索
查看: 4480|回复: 5

[GUI管理] 【已解决】快捷菜单消息响应问题

[复制链接]
发表于 2015-1-30 23:21:17 | 显示全部楼层 |阅读模式
本帖最后由 wangms 于 2015-1-31 02:04 编辑

先上码;
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiMenu.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Global Enum $e_idOpen = 1000, $e_idSave, $e_idInfo

Example()

Func Example()
        ; 创建 GUI
        GUICreate("菜单 UDF 示例", 400, 200)
        $idLabel = GUICtrlCreateLabel('Label控件', 2, 2, 350, 196, BitOR($SS_CENTER,$WS_BORDER), $GUI_WS_EX_PARENTDRAG)  ;$SS_CENTER 文本居中,设置$GUI_WS_EX_PARENTDRAG,按住本控件可拖动窗口
        GUICtrlSetFont(-1, 16, 500, Default, '微软雅黑') ; 设置上面控件的字体.
        GUICtrlSetBkColor(-1, 0x000000)            ;控件的背景色
        GUICtrlSetColor(-1, 0x00FF00)            ;控件的文本颜色

        GUISetState(@SW_SHOW)

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

        ; 循环到用户退出.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

; 处理 WM_COMMAND 消息
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        #forceref $hWnd, $iMsg, $lParam
        Switch $wParam
                Case $e_idOpen
                        _WinAPI_ShowMsg("你点击了 [打开] 菜单")
                Case $e_idSave
                        _WinAPI_ShowMsg("你点击了 [保存]  菜单")
                Case $e_idInfo
                        _WinAPI_ShowMsg("你点击了 [信息] 菜单")
        EndSwitch
EndFunc   ;==>WM_COMMAND

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

        $hMenu = _GUICtrlMenu_CreatePopup()
        _GUICtrlMenu_InsertMenuItem($hMenu, 0, "打开", $e_idOpen)
        _GUICtrlMenu_InsertMenuItem($hMenu, 1, "保存", $e_idSave)
        _GUICtrlMenu_InsertMenuItem($hMenu, 3, "", 0)
        _GUICtrlMenu_InsertMenuItem($hMenu, 3, "信息", $e_idInfo)
        _GUICtrlMenu_TrackPopupMenu($hMenu, $wParam)
        _GUICtrlMenu_DestroyMenu($hMenu)
        Return True
EndFunc   ;==>WM_CONTEXTMENU
GUI显示图:


如图所示,快捷菜单在控件区不能响应WM_COMMAND消息。求教如何处理才能做到在整个GUI区接收到WM_COMMAND消息?请高手出手指点!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2015-1-30 23:27:52 | 显示全部楼层
自己先顶一下,盼老师们看见。。。
发表于 2015-1-31 00:04:18 | 显示全部楼层
53行改为
_GUICtrlMenu_TrackPopupMenu($hMenu, $hWnd)
 楼主| 发表于 2015-1-31 02:03:59 | 显示全部楼层
回复 3# afan


    A大出手就是不一样。谢谢!!
发表于 2015-1-31 13:45:46 | 显示全部楼层
学习一下,感谢,非常感谢。万分感谢
发表于 2015-2-4 11:56:36 | 显示全部楼层
高手出手 如此简单有效啊 佩服
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 11:56 , Processed in 0.088973 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表