2012年4月11日 星期三

VB中使MsFlexGrid和MSHFlexGrid控件支持鼠标滚动操作


將這一段程式放到 公共的模組中

Public Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long

Public Declare Function WaitMessage Lib "user32" () As Long
Public bCancel As Boolean
Public Const WM_MOUSEWHEEL = 522

Public Sub ProcessMessages(sGrid1 As MSFlexGrid)
Dim Message As Msg
       Do While Not bCancel
          'WaitMessage ‘等待消息
          If PeekMessage(Message, sGrid1.hWnd, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) Then
              If Message.wParam < 0 Then  ' 向上
                 'Me.Top = Me.Top + 240
                If sGrid1.TopRow < sGrid1.Rows Then
                   sGrid1.TopRow = sGrid1.TopRow + 1
                End If
             Else     '向下??
                If sGrid1.TopRow > 1 Then
                    sGrid1.TopRow = sGrid1.TopRow - 1
                End If
             End If
          End If
          DoEvents
       Loop
End Sub


然後 在每一支程式 的From_load() 加入 此段


'加入此段 即可使用滑鼠滾輪的功能了
    Me.AutoRedraw = True
      Call ProcessMessages(Grid1)




沒有留言: