MSHFlexGrid1:我如何让它支持鼠标滚轮从而能上下滚动

解决方案 »

  1.   

    模块里:
    '支持滚轮鼠标API---------------------------------
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_COMMAND = &H111
    Public Const WM_MBUTTONDOWN = &H207
    Public Const WM_MBUTTONUP = &H208
    Public Const WM_MOUSEWHEEL = &H20A
     
    Public Oldwinproc As Long
    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 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As LongPublic Function FlexScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    '支持滚轮的滚动
      Select Case wMsg
      Case WM_MOUSEWHEEL
        Select Case wParam
        Case -7864320 '向下滚
            SendKeys "{DOWN}"
            SendKeys "{DOWN}"
            SendKeys "{DOWN}"
          
        Case 7864320 '向上滚
            SendKeys "{UP}"
            SendKeys "{UP}"
            SendKeys "{UP}"
        End Select
      End Select
      FlexScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)
    End Function
    '支持滚轮鼠标API---------------------------------窗体里:Private Sub Form_Load()
    MSFlexGrid1.Rows = 100
    MSFlexGrid1.Cols = 100
    End SubPrivate Sub MSFlexGrid1_GotFocus()
    Oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
     SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf FlexScroll
    End SubPrivate Sub MSFlexGrid1_LostFocus()
    SetWindowLong Me.hWnd, GWL_WNDPROC, Oldwinproc
    End Sub
      

  2.   

    加一个combobox
    用combobox的kedowon事件控制MSFlexGrid1的toprow