我现在用的一个网格控件不接受右键事件,如何处理,像ListView这样的控件一样,产生Mouse_UP事件时先会触发Click事件,选择网格的一项内容。如何实现这一功能。

解决方案 »

  1.   

    晕,子类化在VB里是最常见的一种技术了。'模块里的代码
    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 OldWndProc& Public Sub NewWndFunc(ByVal Hwndl&) 
    OldWndProc = SetWindowLong(Hwndl, GWL_WNDPROC, AddressOf txtWndProc)’返回 窗口的默认窗口函数的地址,以便恢复 
    End Sub Public Sub OldWndFunc(ByVal Hwndl&)' 恢复窗口的默认窗口函数 
    SetWindowLong Hwndl, GWL_WNDPROC, OldWndProc 
    End Sub Public Function MyWndProc&(ByVal NewHwnd&,ByVal uMsg&, ByVal wParam&, ByVal lParam&) 
    Select Case uMsg 
    Case 你要自己处理的消息,比如WM_CLICK等等
    Case Else 
    MyWndProc= CallWindowProc(OldWndProc, NewHwnd, uMsg, wParam, lParam) 
    End Select 
    End Function '窗体里的代码
    Private Sub Form_Load() 
    NewWndFunc 你的控件.hwnd 
    End Sub '最好加上这个代码
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 
    OldWndFunc Text1.hwnd 
    End Sub