请教鼠标事件!

lingyun007 2003-10-16 04:36:08
请问各位,鼠标有没有左键单击和右键单击事件?
...全文
34 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx05 2003-10-17
  • 打赏
  • 举报
回复
up
cjlong 2003-10-17
  • 打赏
  • 举报
回复
可以挂钩子,截获鼠标信息

建议看看乡关文章,关于SetWindowsHookEx的
netbooting 2003-10-17
  • 打赏
  • 举报
回复
没有那还判断了有什么用呢,
cjlong 2003-10-17
  • 打赏
  • 举报
回复
这些事件是当按下 ( MouseDown ) 或者释放 ( MouseUp ) 鼠标按钮时发生。

语法

Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub object_MouseDown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

Private Sub Form_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub MDIForm_MouseUp(button As Integer, shift As Integer, x As Single, y As Single)

Private Sub object _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

MouseDown 和 MouseUp 事件各种语法包含下列部分:

部分 描述
object 返回一个对象表达式,其值是“应用于”列表中的一个对象。
index 返回一个整数,用来唯一地标识一个在控件数组中的控件。
button 返回一个整数,用来标识该事件的产生是按下 ( MouseDown ) 或者释放 ( MouseUp ) 按钮引起的。button 参数是具有相应于左按钮(位 0),右按钮(位 1),以及中间按钮(位 2)的一个位字段。这些位的值分别等于 1,2,和 4。其中仅有一位被设置,指示出引起该事件的那个按钮。
shift 返回一个整数,在 button 参数指定的按钮被按下或者被释放的情况下,该整数相应于 SHIFT,CTRL,和 ALT 键的状态。某键被按下使得一个二进制位被设置。shift 参数是具有相应于 SHIFT 键(位 0),CTRL 键(位 1),以及 ALT 键(位 2)最少二进制位的一个位字段。这些位的值分别等于 1,2,和 4。shift 参数指示这些键的状态。这些位中可能有一些,全部,或者一个也没有被设置,指示这些键中的一些、全部,或者一个也没有被按下。例如,CTRL 和 ALT 键都被按下,则 shift 的值就是 6。
x, y 返回一个指定鼠标指针当前位置的数。x 和 y 的值所表示的总是通过该对象 ScaleHeight, ScaleWidth, ScaleLeft, 和ScaleTop 属性所建立的坐标系统的方式。


说明

为了在给定的一个鼠标按钮按下或释放时指定将引起的一些操作,应当使用 MouseDown 或者 MouseUp 事件过程。不同于 Click 和 DblClick 事件的是,MouseDown 和 MouseUp 事件能够区分出鼠标的左、右、和中间按钮。也可以为使用 SHIFT, CTRL, 和 ALT 等键盘换挡键编写用于鼠标—键盘组合操作的代码。

下列情况对 Click 和 DblClick 事件都适用:

如果鼠标按钮是当其指针在窗体或控件之上时被按下,则该对象将“捕获”鼠标并接收包括最后 MouseUp 事件在内的全部鼠标事件。这暗示了通过鼠标事件所返回的 x,y 鼠标指针坐标值,可以不总是在接收它们的对象的内部区域之内。


如果鼠标被持续地按下,则第一次按下之后捕获鼠标的对象将接收全部鼠标事件直至所有按钮被释放为止。
如果要测试 button 或 shift 参数,可以使用对象浏览器中的 Visual Basic (VB) 对象库中所列出的常数,用来定义该参数中的各个二进制位:

常数(按钮) 值 描述
vbLeftButton 1 左按钮被按下
vbRightButton 2 右按钮被按下
vbMiddleButton 4 中间按钮被按下

常数(换挡) 值 描述
vbShiftMask 1 SHIFT 键被按下。
vbCtrlMask 2 CTRL 键被按下。
vbAltMask 4 ALT 键被按下。


随后这些常数作为位屏蔽,对于按钮的各种组合,无须计算各个组合的唯一的位字段即可进行测试。

××××××××××××××××××××
为了我的女友,我要做MVP
yangjinok 2003-10-17
  • 打赏
  • 举报
回复
对于没有mouseup和mousedown事件的控件如何判断啊?
easydone 2003-10-16
  • 打赏
  • 举报
回复
MouseDown or MouseUp
demo001 2003-10-16
  • 打赏
  • 举报
回复
楼上诸位已经回答得很清楚了阿!
tianjh 2003-10-16
  • 打赏
  • 举报
回复
up
tianjh 2003-10-16
  • 打赏
  • 举报
回复
可以通过单击事件中的BUTTON参数的状态值确定如果button=1 是左 ,button=2是右具体是那个数字代表哪个键记不清了。自己查一下吧。
射天狼 2003-10-16
  • 打赏
  • 举报
回复
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
MsgBox "点击左键"
ElseIf Button = vbRightButton Then
MsgBox "点击右键"
ElseIf Button = vbMiddleButton Then
MsgBox "点击中间键"
End If
End Sub
strongfisher 2003-10-16
  • 打赏
  • 举报
回复
左键单击和右键单击事件是通过 button 的值来获得的

Private Sub cmdOK_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

End Sub

7,759

社区成员

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

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