哈哈 上面的几位可能没有说清楚,我再来说一遍 你先打开菜单 “工具”下的 “菜单编辑器” 在里面加入一个名为 see1的菜单可见设置为false 在see1菜单下设置几个see1的子菜单(可见) 在代码里加入:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu see1 End If End Sub现在你在form里(不是在其他控件)点击鼠标右键就可以看到see1下的菜单了
PopupMenu menuCtrl
End Sub我是这样做了但是弹不出
弹出的是menuCtrl下的子菜单(这些子菜单一定要可见的哦)
但是弹不出啊!快来救命啊!
就是弹不出啊,但是有的界面上能弹出!不知怎么啦!
你先打开菜单 “工具”下的 “菜单编辑器”
在里面加入一个名为 see1的菜单可见设置为false
在see1菜单下设置几个see1的子菜单(可见)
在代码里加入:Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu see1
End If
End Sub现在你在form里(不是在其他控件)点击鼠标右键就可以看到see1下的菜单了
如果以模态显示第二个窗体,那你就没有办法用PopupMenu显示唐初菜单。察看msdn可以知道,如果你不返回窗体popupmenu函数就不会返回(在显示模态窗体的情况下,如果再非模态的窗体情况下,popupmenu函数可以返回),而popupmenu函数一次只能弹出一个弹出菜单。我前一次也遇到了这种情况。如果你的菜单条是可见的,这可用i=getmenu(第二个窗体的.hwnd)得到菜单的句柄,getsubmenu(i)得到子菜单的句柄,再用api函数trackpopupmenu函数弹出菜单。如果你的菜单条是不可见的那就麻烦多了。那就必须采用子类技术。首先,先用createpoupmenu创建一个菜单,用appendmenu添加你需要的菜单条。接着用trackpopupmenu显示弹出菜单。再拦截wm_command消息,获取菜单id,然后判断,处理。
也就是,如果你采用popupmenu方式显示一个窗体时,你就不能再使用popupmenu显示另外一个弹出式菜单。应为这时候的第一个popupmenu函数还没有返回。这是他会忽略掉另一个popupmenu的调用。