首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

怎么让mshflexgrid支持鼠标滑轮啊

2012-01-23 
如何让mshflexgrid支持鼠标滑轮啊?高手教教我哈!我发现vb的grid控件都不支持滑轮的![解决办法]用子类化网

如何让mshflexgrid支持鼠标滑轮啊?
高手教教我哈!

我发现vb的grid控件都不支持滑轮的   !

[解决办法]
用子类化
网上NNNNNNNNNNNNNNNNN多代码
VB版也回复过NNNNNNNNNNNNNNNNNNN多这个问题了
或者看这里
http://blog.csdn.net/yachong/archive/2007/01/26/1494442.aspx
[解决办法]
Private Sub MSHFlexGrid1_GotFocus()
Oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf FlexScroll
End Sub
Private Sub MSHFlexGrid1_LostFocus()
SetWindowLong Me.hWnd, GWL_WNDPROC, Oldwinproc
End Sub

[解决办法]
以下代码写在模块里面
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 Long

Public Function FlexScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'支持滚轮的滚动 Yu 2004-5-10 15:33
Select Case wMsg

Case WM_MOUSEWHEEL

Select Case wParam

Case -7864320 '向下滚
SendKeys "{PGDN} "

Case 7864320 '向上滚
SendKeys "{PGUP} "

End Select

End Select

FlexScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)

End Function


以下代码写在窗体里面

Private Sub MfgMonth_GotFocus()

Oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf FlexScroll
End Sub

Private Sub MfgMonth_LostFocus()
SetWindowLong Me.hWnd, GWL_WNDPROC, Oldwinproc

End Sub

热点排行