如何让VB的图片框控件支持鼠标滚轮 当它获得焦点时使它在窗体上,上下移动

如何让VB的图片框控件支持鼠标滚轮 当它获得焦点时使它在窗体上,上下移动,第1张

用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 代码编辑框里面鼠标滚动轮怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9481361.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存