object.PopupMenu menuname, flags, x, y, boldcommand

解决方案 »

  1.   

    先在此Form中建立一个菜单条,把它设为隐藏。在鼠标单击事件中PopupMenu
      

  2.   

    Private Sub TreePFirstInfo_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
        
        PopupMenu menuCtrl
        
    End Sub我是这样做了但是弹不出
      

  3.   

    me.PopupMenu menuCtrl
        弹出的是menuCtrl下的子菜单(这些子菜单一定要可见的哦)
      

  4.   

    menuCtrl下有子菜单,这些子菜单一定可见,
    但是弹不出啊!快来救命啊!
      

  5.   

    bamboo(大青竹) :在上面!
    就是弹不出啊,但是有的界面上能弹出!不知怎么啦!
      

  6.   

    哈哈 上面的几位可能没有说清楚,我再来说一遍
    你先打开菜单 “工具”下的 “菜单编辑器”
    在里面加入一个名为 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下的菜单了
      

  7.   

    鼠标右键弹出菜单最好用MouseUp事件。
      

  8.   

    你的情况跟贴子:http://expert.csdn.net/Expert/topic/1167/1167246.xml?temp=.9965784的情况差不多。
    如果以模态显示第二个窗体,那你就没有办法用PopupMenu显示唐初菜单。察看msdn可以知道,如果你不返回窗体popupmenu函数就不会返回(在显示模态窗体的情况下,如果再非模态的窗体情况下,popupmenu函数可以返回),而popupmenu函数一次只能弹出一个弹出菜单。我前一次也遇到了这种情况。如果你的菜单条是可见的,这可用i=getmenu(第二个窗体的.hwnd)得到菜单的句柄,getsubmenu(i)得到子菜单的句柄,再用api函数trackpopupmenu函数弹出菜单。如果你的菜单条是不可见的那就麻烦多了。那就必须采用子类技术。首先,先用createpoupmenu创建一个菜单,用appendmenu添加你需要的菜单条。接着用trackpopupmenu显示弹出菜单。再拦截wm_command消息,获取菜单id,然后判断,处理。
      

  9.   

    在显示弹出式菜单时,调用 PopupMenu 方法后面的代码直到用户或者从菜单中选择了命令(这时,该命令的 Click 事件的代码比 PopupMenu 语句后面的代码先执行)或者取消该菜单时才能执行。此外,每次只能显示一个弹出式菜单,因此,如果已经显示了一个弹出式菜单或打开了一个下拉式菜单时,该方法的其它调用将被忽略。[应用MSDN的原话!]
    也就是,如果你采用popupmenu方式显示一个窗体时,你就不能再使用popupmenu显示另外一个弹出式菜单。应为这时候的第一个popupmenu函数还没有返回。这是他会忽略掉另一个popupmenu的调用。