如题!!!

解决方案 »

  1.   

    点击COMBO出菜单,还是让菜单里的项目和COMBO一样?
      

  2.   

    首先建立一个弹出菜单和Combo,然后再建立一个模块,把以下代码复制下去Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public 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 Const GWL_WNDPROC = (-4)
    Public Const WM_RBUTTONUP = &H205
    Public OldComboProc As Long
    Public MousePoint As POINTAPI
    Public Sub Initialize(hWnd As Long)
    OldComboProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf NewComboProc)
    End Sub
    Public Function NewComboProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '处理按钮消息
    Select Case Msg
      Case WM_RBUTTONUP
      Form1.PopupMenu Form1.Menu, , Form1.Combo1.Left, Form1.Combo1.Top
      End Select
        NewComboProc = CallWindowProc(OldComboProc, hWnd, Msg, wParam, lParam)
    End Function最后在窗口代码里:
    Private Sub Form_Load()
    Combo1.AddItem "Temp"
    Combo1.AddItem "Temp2"
    Initialize Combo1.hWnd
    End Sub
    这样就成功了,但现在还有两个问题没有解决,一是菜单弹出的位置不够准确,用GetCursorPos我不记得如何能获取鼠标在窗内的坐标了,二是现在只能在当选择了某一项时按右键才能弹出,而不是在选择项目的时候能弹出,因为那个时候COMBO
      

  3.   

    因为那个时候COMBO是不接受鼠标右键消息的,但我也不知道选择的时候是哪个消息,所以留给楼主自己来完善了