VB应该如何捕捉鼠标滑轮滚动事件?

Cafes 2003-09-26 05:51:45
rt
...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cafes 2003-09-26
  • 打赏
  • 举报
回复
多谢了
这就结贴
rainstormmaster 2003-09-26
  • 打赏
  • 举报
回复
如何使用滑鼠滾輪的訊息如何使用滑鼠滾輪的訊息


說明
由於VB自訂的事件中,並沒有這項訊息,於是只好自己攔截WM_MOUSEWHEEL這個訊息了
程式
'以下在.Bas
Option Explicit

'用以告訴系統當這個視窗的msg事件發生時 執行lpPrevWndFunc
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
'lpPrevWndFunc執行函數的位址
'hwnd 就是視窗的hwnd屬性
'Msg就是訊息 例如按下滑鼠右鍵 最大化....
'wParam,lParam會因Msg不同而有不同的用途

'用以設定視窗的程序
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
'hwnd 就是所要設定視窗的hwnd屬性
'nIndex 是要設定的程序
'dwNewLong 所指定的程序(nIndex)所要執行的動作

Public Const GWL_WNDPROC = (-4)
Public Const WM_MOUSEWHEEL = &H20A
Public PrevWndProc As Long

Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
Dim t(0 To 1) As Integer
If uMsg = WM_MOUSEWHEEL Then '如果是滾輪
If wParam < 0 Then 'backward
Form1.Top = Form1.Top + 10
Else 'forforward
Form1.Top = Form1.Top - 10
End If
Else
WndProc = CallWindowProc(PrevWndProc, hwnd, uMsg, wParam, lParam)
'其他訊息用原來的回呼函數處理
End If
End Function
'以下在Form1中
Option Explicit
Private Sub Form_Load()
PrevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
'設定新的回呼函式 以攔截訊息
'note: 傳回值PrevWndProc是原來視窗的回呼函數
'WndProc函數放在模組 因為AddressOf只能取得模組下函數的位址
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim lResult As Long
lResult = SetWindowLong(Me.hwnd, GWL_WNDPROC, PrevWndProc)
'結束時歸還原來的回呼函數 不然會當機
End Sub
Cafes 2003-09-26
  • 打赏
  • 举报
回复
这个api谁都知道
具体怎么实现滚轮用哪个参数?
这里也就dwExtraInfo是用于特定的驱动的.
但是怎么用?谁能给个例子
hcj2002 2003-09-26
  • 打赏
  • 举报
回复
用api函数:
Public Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Cafes 2003-09-26
  • 打赏
  • 举报
回复
up一下

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧