阿杰 发表于 2009-7-29 00:37:16

使DataGrid支持鼠标滚轮滚动记录

'<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D6%A7%B3%D6">支持</span>滚轮<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CA%F3%B1%EA">鼠标</span><span class="t_tag" onclick="tagshow(event)" href="tag.php?name=API">API</span>---------------------------------<br/>Public Const GWL_WNDPROC = (-4)<br/>Public Const WM_COMMAND = &amp;H111<br/>Public Const WM_MBUTTONDOWN = &amp;H207<br/>Public Const WM_MBUTTONUP = &amp;H208<br/>Public Const WM_MOUSEWHEEL = &amp;H20A<br/>Public Oldwinproc As Long<br/>Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, _<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br/>Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long<br/>Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, _<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;ByVal nIndex As Long) As Long<br/>&nbsp;&nbsp;Public Function FlexScroll(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long<br/>&nbsp; &nbsp; '支持滚轮的滚动&nbsp; &nbsp;Yu&nbsp; &nbsp;2004-5-10&nbsp; &nbsp;15:33<br/>&nbsp; &nbsp; Select Case wMsg<br/>&nbsp; &nbsp; Case WM_MOUSEWHEEL<br/>&nbsp; &nbsp; Debug.Print wParam<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Select Case wParam<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Case -7864320&nbsp; &nbsp; '向下滚<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SendKeys "{PGDN}"<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Case 7864320&nbsp; &nbsp; '向上滚<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SendKeys "{PGUP}"<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;End Select<br/>&nbsp; &nbsp; End Select<br/>&nbsp; &nbsp; FlexScroll = CallWindowProc(Oldwinproc, hWnd, wMsg, wParam, lParam)<br/>End Function<br/>'支持滚轮鼠标API---------------------------------<br/>'将下列代码写到表格<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%BF%D8%BC%FE">控件</span>的GotFocus事件中&nbsp; &nbsp;<br/>&nbsp;&nbsp;Private&nbsp; &nbsp;Sub&nbsp; &nbsp;控件名称_GotFocus()&nbsp; &nbsp;<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Oldwinproc&nbsp; &nbsp;=&nbsp; &nbsp;GetWindowLong(Me.hWnd,&nbsp; &nbsp;GWL_WNDPROC)&nbsp; &nbsp;<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; SetWindowLong&nbsp; &nbsp;Me.hWnd,&nbsp; &nbsp;GWL_WNDPROC,&nbsp; &nbsp;AddressOf&nbsp; &nbsp;FlexScroll&nbsp; &nbsp;<br/>&nbsp;&nbsp;End&nbsp; &nbsp;Sub&nbsp; &nbsp;<br/>&nbsp; &nbsp; <br/>&nbsp;&nbsp;'将下列代码写到表格控件的LostFocus事件中&nbsp; &nbsp;<br/>&nbsp;&nbsp;Private&nbsp; &nbsp;Sub&nbsp; &nbsp;控件名称_LostFocus()&nbsp; &nbsp;<br/>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; SetWindowLong&nbsp; &nbsp;Me.hWnd,&nbsp; &nbsp;GWL_WNDPROC,&nbsp; &nbsp;Oldwinproc&nbsp; &nbsp;<br/>&nbsp;&nbsp;End&nbsp; &nbsp;Sub

马大哈 发表于 2009-7-30 00:02:36

<p>支持.</p>
<p>&nbsp;</p>
<p>子类化拦截鼠标滚轮再模拟键盘的PU与PD键.</p>

wlrlg 发表于 2010-5-6 18:06:30

为什么要经常;P
页: [1]
查看完整版本: 使DataGrid支持鼠标滚轮滚动记录