Autohotkey 中文论坛
[已解决] menu添加子菜单的两种方式及差异 - 可打印的版本

+- Autohotkey 中文论坛 (http://ahkcn.net)
+-- 版块: AutoHotkey (/forum-3.html)
+--- 版块: 综合讨论 (/forum-33.html)
+--- 主题: [已解决] menu添加子菜单的两种方式及差异 (/thread-6188.html)



menu添加子菜单的两种方式及差异 - 火冷 - 2017-02-01 23 : 01

如图有两种添加子菜单的方式,
但方式2会多出了分隔线,用什么方式删除呢?
方式2的流程在读取配置生成菜单时更易用。
代码:
#SingleInstance Force
;添加两个项目,并设置A,B为热键
Menu, MyMenu, Add, Item1(&A), MenuHandler
Menu, MyMenu, Add, Item2(&B), MenuHandler

;方式1:子菜单把项目全添加后再添加到主菜单
;添加项目到子菜单MySubmenu1,格式和上面一样
;Menu, MySubmenu1, Add, Item3, MenuHandler
;Menu, MySubmenu1, Add, Item4, MenuHandler

;Menu, MyMenu, Add, My Submenu, :MySubmenu1

;方式2:先添加子菜单到主菜单,再给子菜单添加项目
Menu, MySubmenu1, Add ;比上个方法要多写这一句,副作用是子菜单第一项都有分隔符
Menu, MyMenu, Add, My Submenu, :MySubmenu1

Menu, MySubmenu1, Add, Item3, MenuHandler
Menu, MySubmenu1, Add, Item4, MenuHandler
Return

MenuHandler:
MsgBox You selected %A_ThisMenuItem% from the Menu %A_ThisMenu%.
Return

#k::Menu, MyMenu, Show



RE: menu添加子菜单的两种方式及差异 - robertL - 2017-02-08 15 : 24

Menu, MySubmenu1, Add添加了个分隔符。
当前不支持仅删除分隔符。
可以先任意添加一项(非分隔符),再删除它?
代码:
Menu, MySubmenu1, Add,newSub,MenuHandler
..
Menu, MySubmenu1, delete,newSub



RE: menu添加子菜单的两种方式及差异 - 火冷 - 2017-02-11 00 : 05

(2017-02-08 15 : 24)robertL 提到:  Menu, MySubmenu1, Add添加了个分隔符。

是啊,但是没有这句又不能添加到主菜单,看来还是有点缺陷~


RE: menu添加子菜单的两种方式及差异 - 火冷 - 2017-06-05 00 : 16

代码:
#SingleInstance Force
;添加两个项目,并设置A,B为热键
Menu, MyMenu, Add, Item1(&A), MenuHandler
Menu, MyMenu, Add, Item2(&B), MenuHandler

;方式1:子菜单把项目全添加后再添加到主菜单
;添加项目到子菜单MySubmenu1,格式和上面一样
;Menu, MySubmenu1, Add, Item3, MenuHandler
;Menu, MySubmenu1, Add, Item4, MenuHandler
;Menu, MyMenu, Add, My Submenu, :MySubmenu1

;方式2:先添加子菜单到主菜单,再给子菜单添加项目
Menu, MySubmenu1, Add ;比上个方法要多写这一句,副作用是此命令还给子菜单添加了分隔符
Menu, MySubmenu1, DeleteAll ;所以要增加这一条来删除分隔符 NOTE
Menu, MyMenu, Add, My Submenu, :MySubmenu1
Menu, MySubmenu1, Add, Item3, MenuHandler
Menu, MySubmenu1, Add, Item4, MenuHandler
Return

MenuHandler:
MsgBox You selected %A_ThisMenuItem% from the Menu %A_ThisMenu%.
Return

#k::Menu, MyMenu, Show
[/code]


RE: menu添加子菜单的两种方式及差异 - Zz - 2018-05-24 13 : 47

这个问题我也拖了很久,之前觉得解决很麻烦,不过后来解决起来意外的简单。
我先用了一种笨方法:添加一个不会重复的子菜单项,添加子菜单后再删除
代码:
Menu, MySubmenu1, Add,% Chr(3),临时使用
Menu, MyMenu, Add, My Submenu, :MySubmenu1
Menu, MySubmenu1, Delete,% Chr(3)

后来才发现AHK支持删除分割线:一样先添加,然后再删除,这样有子菜单同时不会有分割线

代码:
Menu, MySubmenu1, Add
Menu, MyMenu, Add, My Submenu, :MySubmenu1
Menu, MySubmenu1, Delete,1&