
用VB自带的程序藐视比较难。如楼上那位仁兄说的用API函数就很简单了。private 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)
说明
模拟一次鼠标事件
参数表
参数 类型及说明
dwFlags Long,下述标志的一个组合
MOUSEEVENTF_ABSOLUTE dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
MOUSEEVENTF_MOVE 移动鼠标
MOUSEEVENTF_LEFTDOWN 模拟鼠标左键按下
MOUSEEVENTF_LEFTUP 模拟鼠标左键抬起
MOUSEEVENTF_RIGHTDOWN 模拟鼠标右键按下
MOUSEEVENTF_RIGHTUP 模拟鼠标右键按下
MOUSEEVENTF_MIDDLEDOWN 模拟鼠标中键按下
MOUSEEVENTF_MIDDLEUP 模拟鼠标中键按下
dx Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动
dy Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动
cButtons Long,未使用
dwExtraInfo Long,通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序
注解
这个函数是模拟鼠标的动作。
it1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, GridsEh, DBGridEh, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
DBGridEh1: TDBGridEh;
DataSource1: TDataSource;
ADOTable1: TADOTable;
RichEdit1: TRichEdit;
procedure FormCreate(Sender: TObject);
private
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
public
end;
var
Form1: TForm1;
implementation
Procedure TForm1OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msgmessage = WM_MouseWheel then
begin
if MsgwParam = 0 then
begin
if DBGridEh1Focused then SendMessage(DBGridEh1Handle,WM_VSCROLL,SB_NONE,0);
end;
Handled:= True;
end;
end;
procedure TForm1FormCreate(Sender: TObject);
begin
ApplicationOnMessage:=OnMouseWheel;
end;
end
首先下载一个 动态连接库 VB6IDEMouseWheelAddindll
放到 C:\WINDOWS\system32
然后注册, 开始--运行--输入regsvr32 VB6IDEMouseWheelAddindll
打开VB,外接程序--外接程序管理器
选择MouseWheel Fix
在加载行为选择:
在启动中加载(S)
加载/卸载(L)
这两个确定即可
首先在DataGrid 的 拆分 属性中的 选取框样式 设置为 3,即整行高亮选择,然后加入如下代码就支持了,只要让鼠标的焦点在grid控件上,滚动鼠标滑轮,grid滚动条会自动滚动的。
如果需要更平滑的滚动以及自定义滚动方法,我还有个代码,到时发给你,你自己研究吧。
示例 *** 作方法:
将以下代码写到公共模块中
'支持滚轮鼠标API---------------------------------
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
'支持滚轮鼠标API---------------------------------
'将下列代码写到表格控件的GotFocus事件中
Private Sub 控件名称_GotFocus()
Oldwinproc = GetWindowLong(MehWnd, GWL_WNDPROC)
SetWindowLong MehWnd, GWL_WNDPROC, AddressOf FlexScroll
End Sub
'将下列代码写到表格控件的LostFocus事件中
Private Sub 控件名称_LostFocus()
SetWindowLong MehWnd, GWL_WNDPROC, Oldwinproc
End Sub
1、滚动条分为水平滚动条(HSCROLLBAR)和垂直滚动条(VSCROLLBAR)两种,可以作为输入设备或者速度、数量的指示器来使用 2、基本属性:objectmax[=value],objectmin[=value],最大最小范围 objectvalue[=value],
呵呵 ,默认VB60不支持鼠标滚动,你可以下载vb6idemousewheeladdindll文件,安装你 *** 作系统盘符里,运行regsvr32 vb6idemousewheeladdindll 注册成功后 去vb打开界面的外接程序管理器里加载mousewheelfix,就OK了。。。。望采纳。
以上就是关于如何让VB的图片框控件支持鼠标滚轮 当它获得焦点时使它在窗体上,上下移动全部的内容,包括:如何让VB的图片框控件支持鼠标滚轮 当它获得焦点时使它在窗体上,上下移动、VB 6.0中 VScroll怎样相应鼠标滚轮的事件、vb6.0 代码编辑框里面鼠标滚动轮怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)