
正文
vbnet滚轮值 vb滚动条控件
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net panel的vscroll的滑轮事件
点击panel时得到panelvbnet滚轮值的焦点vbnet滚轮值,就可以用鼠标滚轮来控制滚动条了!代码如下:
Private Sub Panel1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.Click
Panel1.Focus()
End Sub
相关问答
Q1: VB怎么实现滚动条对鼠标中轴的响应啊?
VB可以使用子类化处理鼠标滚轮消息。
新建工程
在窗体中添加滚动条VScroll1
'窗体代码
Private Sub Form_Load()
'取得控件的句柄
hwndVS = VScroll1.hwnd
'保存smMap控件的默认窗口消息处理函数地址
OldWindowProc = GetWindowLong(VScroll1.hwnd, GWL_WNDPROC)
'将smMap控件的消息处理函数指定为自定义函数NewWindowProc
Call SetWindowLong(VScroll1.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)
End Sub
添加一模块:
Option Explicit
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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = -4
Public Const WM_MOUSEWHEEL = H20A
Public OldWindowProc As Long '用来保存系统默认的窗口消息处理函数的地址
Public hwndVS As Long '用来保存控件的句柄
'自定义的消息处理函数
Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
If msg = WM_MOUSEWHEEL Then
'则对鼠标滚轮事件进行处理
If wParam = -7864320 Then '向下滚动
Form1.VScroll1.Value = Form1.VScroll1.Value + 1
ElseIf wParam = 7864320 Then '向上滚动
Form1.VScroll1.Value = Form1.VScroll1.Value - 1
End If
Else
'调用默认窗口消息处理函数
NewWindowProc = CallWindowProc(OldWindowProc, hwnd, msg, wParam, lParam)
End If
End Function
Q2: vb如何监视鼠标滚轮事件
首先你的要求无法满足,因为你的是类模块,类模块内的任何过程都是对外不可见的,监视全局鼠标事件必须要提供一个全局可见的(可以使用AddressOf符号的)过程,这个过程必须在模块里用public方式声明,在类模块里做不到。
其次,你希望触发一个事件,然后让你执行代码,但是windows系统有要求就是鼠标事件钩子不可以被其它代码中断,也就是说就算你拿到了这个事件也不可以做进一步处理,否则别的程序无法正常接受消息,严重的时候会让系统崩溃。
唯一的手段是放到模块里,将鼠标事件写入一个标志变量里,然后用timer去读这个变量是可以的,以下是代码:
窗口内添加一个按钮和一个timer控件
代码如下
Private Sub Command1_Click()
If hookId = 0 Then
hookId = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseProc, App.hInstance, 0)
ElseIf hookId 0 Then
UnhookWindowsHookEx hookId
hookId = 0
End If
End Sub
Private Sub Form_Load()
Timer1.Interval = 10
End Sub
Private Sub Form_Unload(Cancel As Integer)
If hookId 0 Then
UnhookWindowsHookEx hookId
hookId = 0
End If
End Sub
Private Sub Timer1_Timer()
If EventRaised = True Then
Debug.Print Direction
EventRaised = False
End If
End Sub
添加一个模块,粘贴如下代码:
Option Explicit
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Const WH_MOUSE_LL = 14
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Const WM_MOUSEWHEEL = H20A
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As MSLLHOOKSTRUCT, ByVal Source As Long, ByVal Length As Long)
Public hookId As Long
Public Direction As Boolean
Public EventRaised As Boolean
Public Type MSLLHOOKSTRUCT
ptx As Long
pty As Long
deltax As Long
deltay As Long
time As Long
extinfo As Long
End Type
Public Function MouseProc(ByVal ncode As Long, ByVal wp As Long, ByVal lp As Long) As Long
Dim ll As MSLLHOOKSTRUCT
If wp = WM_MOUSEWHEEL Then
CopyMemory ll, lp, Len(ll)
If ll.deltax 0 Then
Direction = False
Else
Direction = True
End If
EventRaised = True
End If
MouseProc = CallNextHookEx(hookId, ncode, wp, lp)
End Function
'运行的时候滚动滚轮可以看到调试窗口有信息输出,不明白的请百度HI我
'运行这个程序的时候务必正常关闭窗口,而不是直接在VB里中断掉,否则会让VB挂掉,因为你的钩子不正常退出会让程序崩溃
Q3: vb.net 禁用第三方 控件滚轮事件
拦截窗口程序消息可以解决
参考 VB王国荣API讲座 讲消息的那章
几个API就可以搞定
Q4: vb.net中如何添加滚动条,像在VB6中那样的。不是窗体本身的滚动条
建立滚动条的方法如下:
(1)将鼠标移到ToolBox内的WinForm标签页的HscrollBar控件上,单击鼠标左键。
(2)将指针移至窗体中适当的位置,按住鼠标左键并拖动鼠标将HscrollBar控件调整到合适的大小放开左键。
(3)同样,再在Form上设置一个VscrollBar控件。
Q5: VB.NET picturebox 内绘图完图形放大缩小移动 鼠标控制 。比较笨看了VB的代码不明白 求解
。net 不用api就行
缩放操作
Function 缩放(ByVal bitmap As Bitmap, ByVal 倍数 As Single) As Bitmap
Dim w As Integer = bitmap.Width * 倍数
Dim h As Integer = bitmap.Height * 倍数
Dim tem As New Bitmap(w, h)
Dim g As Graphics = Graphics.FromImage(tem)
g.DrawImage(bitmap, New Rectangle(0, 0, w, h), New Rectangle(0, 0, bitmap.Width, bitmap.Height), GraphicsUnit.Pixel)
g.Dispose()
Return tem
End Function
鼠标滚轮事件 MouseWheel
MouseEventArgs.Delta 值可以判断滚动方向
关于vbnet滚轮值和vb滚动条控件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







