弹出式菜单设计,我用了如下格式
      [窗体名.] popupmenu 菜单名 [,flag [,x,y]]
但每次总是先弹出windows自带的菜单,然后再弹出我设计的菜单
请问各位大侠是如何解决的小弟在此谢了

解决方案 »

  1.   

    Text1.Enabled = False
          Text1.Enabled = True
    ''''////////应该没什么意思.只需要Me.PopupMenu mymenu就可以
      

  2.   

    我的问题是每次总是先弹出windows自带的菜单,然后再弹出我设计的菜单
    why?
    如何达到我的目的
      

  3.   

    //Text1.Enabled = False
    //Me.PopupMenu mymenu
    //Text1.Enabled = True这三句话的确没什么意思,但
    Text1.Enabled = False
    Me.PopupMenu mymenu
    这两者的结合就大有意思了,它们的确以最简便的方法将系统菜单取消掉了,这就是熟能生巧。你要真屏蔽掉TextBox自带的菜单也行,用下面这个程序就行了,但体积也就大大增加了。'新建一个模块将下面语句贴入其中Public OldWinProc As Long ' 保存系统窗口函数的地址
    Public Const WM_CONTEXTMENU = &H7B ' 当右击文本框时,系统发送这条消息Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Function SubClass_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wParam As OLE_HANDLE, ByVal lParam As Long) As Long
      If Msg <> WM_CONTEXTMENU Then
        SubClass_WndMessage = CallWindowProc(OldWinProc, hWnd, Msg, wParam, lParam)
        ' 如果消息不是WM_CONTEXTMENU,就调用系统的窗口处理函数
        Exit Function
      End If
      SubClass_WndMessage = True
    End Function
    '将下面语句贴在Form代码窗中:
    Private Const GWL_WNDPROC = (-4)Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
      If Button = 1 Then Exit Sub
      OldWinProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
      ' 取得窗口函数的地址
      Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass_WndMessage)
      ' 用SubClass_WndMessage代替窗口函数处理消息
    End SubPrivate Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
      If Button = 1 Then Exit Sub
      Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWinProc)
      ' 恢复窗口的默认函数
      Me.PopupMenu mymenu
    End Sub