加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MSflexgrid支持鼠标滚轮事件

发布时间:2020-12-15 01:09:46 所属栏目:百科 来源:网络整理
导读:让MSflexgrid支持鼠标滚轮事件 作者:枕善居主 / 查看次数: 10423 / 评论: 7 http://www.mndsoft.com/blog/VB6/0923.html 以下程序放在一个公共模块中, 在窗体中的form_load事件中 写 HookWheel me.hwnd 在窗体中的form_unload事件中 写 UnHookWheel me.hwnd

让MSflexgrid支持鼠标滚轮事件

http://www.mndsoft.com/blog/VB6/0923.html
以下程序放在一个公共模块中, 在窗体中的form_load事件中 写 HookWheel me.hwnd 在窗体中的form_unload事件中 写 UnHookWheel me.hwnd 在表格的GotFocus事件中 set CtlWheel=MSFlexGrid1??'( 表格名称,根据具体情况,修改这个名称) 在表格的LostFocus事件中 set CtlWheel=Nothing'( 表格名称,根据具体情况,修改这个名称) Option Explicit Private 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 Private Const GWL_WNDPROC?? As Long = (-4) Private Const WM_MOUSEWHEEL As Long = &H20A Private m_OldWindowProc As Long Public CtlWheel As Object Public Sub HookWheel(ByVal frmHwnd) ????m_OldWindowProc = SetWindowLong(frmHwnd,GWL_WNDPROC,AddressOf pvWindowProc) End Sub Public Sub UnHookWheel(ByVal hwnd As Long) ????Dim lngReturnValue As Long ????lngReturnValue = SetWindowLong(hwnd,m_OldWindowProc) ???? End Sub Private Function pvWindowProc(ByVal hwnd As Long,ByVal wMsg As Long,ByVal lParam As Long) As Long ????On Error GoTo errH ???? ????Select Case wMsg ???? ????????Case WM_MOUSEWHEEL ????????????If Not CtlWheel Is Nothing Then ???????????????? If TypeOf CtlWheel Is MSFlexGrid Then ???????????????????? With CtlWheel ???????????????????? ???????????????????????????? Select Case wParam ???????????????????????????? Case Is > 0 ???????? ????????????????????????????????If CtlWheel.TopRow > 0 Then ????????????????????????????????????CtlWheel.TopRow = CtlWheel.TopRow - 1 ????????????????????????????????End If ???????????????????????????????? ???????????????????????????? Case Else ??????????????????????????????? ????????????????????????????????CtlWheel.TopRow = CtlWheel.TopRow + 1 ???????????????????????????????? ???????????????????????????? End Select ??????????????????????End With ??????????????????End If ?????????????????? ?????????? End If ????End Select ???? errH: ???? ????pvWindowProc = CallWindowProc(m_OldWindowProc,hwnd,wMsg,wParam,lParam) End Function

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读