最近几天在写一个Pic看图的Gui控件,想给这个Gui加上右键菜单,稀里糊涂的研究了一天才弄明白,现在分享一下个人经验。
1、大家都应该知道Gui的右键动作是【GuiContextMenu:】这个标签,如果指定了Gui的Name是【View】,那么则为【ViewGuiContextMenu:】,即前面加上Gui的Name前缀
2、可以先给这个右键标签写一个Msgbox,运行一下在Gui界面点击右键看下
ViewGuiContextMenu:
MsgBox 你好
return
3、如果有弹出Msgbox,那就说明这个标签是正确的
4、那么接下来,你应该也会像我一样,认为在这个右键标签里面添加Menu菜单就行了。就像下面一样:
ViewGuiContextMenu:
Menu, RButtonMenu,add, 开始播放 , SendPlay , 1&
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 打开文件路径, 打开文件路径, 2&
Menu, RButtonMenu,add, 回到上一张, Pic_Prev, 3&
Menu, RButtonMenu,add, 自定格式, 自定格式Button
Menu, RButtonMenu,add
Menu, RButtonMenu,add, 设置, 托盘-打开设置
Menu, RButtonMenu,add, 关于, 托盘-About
Menu, RButtonMenu,add, 退出, Exit
Menu, RButtonMenu, Show
return
5、这样想就错了,因为没有在开头做销毁的命令,所以每次点击右键都会重复做Add添加菜单的动作,就像下面的图片一样:
6、知道原因,解决起来就简单了,在这个绘制Menu前面加上一个销毁动作就行了。可是Menu并没有像Gui一样的Destroy销毁指令,所以还需要另外想路子去解决。
7、说那么多其实还是想把造成这样的原因说明白,这样才能养成好思路去解决问题,我也不扯那么多了,直接说正确的步骤:
1、写一个新的标签来执行绘制Menu
2、右键动作标签只需要有一个Show命令
3、回到显示这个Gui的段落,用gosub执行绘制Menu的命令
8、实在没弄明白可以参考以下代码:
学习了2
还是建议把Gosub菜单放在代码一开头的执行段,这样能避免Gui多次开启导致的重复add menu
学习一下!
整个分享下呗哈哈
学习一下!