12 12
发新话题
打印

[问题]键盘和鼠标的事件请问如何编写??

[问题]键盘和鼠标的事件请问如何编写??

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

这个是什么知识呀?我好像没有涉及过,还望不吝赐教,谢谢!!!

TOP

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Button是鼠标键,就是按下左键还是右键,1是左,2是右
Shift是什么我也不知道,
x,y是鼠标的位置坐标,
有好多小游戏都有这方面的介绍,试试吧。
我学的也不好啊

TOP

请版主回复一下!

请版主回复一下!谢谢!好让我们可以学到更多的知识,谢谢!!!

TOP

MouseDown 是三种鼠标事件中最常使用的事件。例如,在运行时可用它调整控件在窗体上的位置,也可用它实现某些图形效果。按下鼠标按钮时就可触发此事件。

注意 鼠标事件被用来识别和响应各种鼠标状态,并把这些状态看作独立的事件,不应将鼠标与 Click 事件和 DblClick 事件混为一谈。在按下鼠标按钮并释放时,Click 事件只能把此过程识别为一个单一的操作─ 单击操作。鼠标事件不同于 Click 事件和 DblClick 事件之处还在于,鼠标事件能够区分各鼠标按钮与 SHIFT、CTRL、ALT 键。


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 键被按下。


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

注意 可使用 MouseMove 事件过程对由于鼠标移动而引起的事件进行响应。MouseDown 和 MouseUp 所使用的 button 参数与 MouseMove 所使用的 button 参数是不同的。对于 MouseDown 和 MouseUp 来说,button 参数要精确地指出每个事件的一个按钮,而对于 MouseMove 来说,它指示的是所有按钮的当前状态。

TOP

本例演示一个简单的绘图应用程序。当任意鼠标按钮按下并拖动时,MouseDown 事件过程和一个相关的 MouseMove 事件过程协同工作以启动绘图。 MouseUp 事件过程禁止绘图。 要尝试这个例子,可将代码粘贴到一个窗体的声明部分,然后按 F5 键,单击窗体并在鼠标按钮按下时移动鼠标。

Dim PaintNow As Boolean
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As
Single, Y As Single)
   PaintNow = True   ' 启动绘图。
End Sub

Private Sub Form_MouseUp (Button As Integer, Shift As Integer, X As Single, Y As Single)
   PaintNow = False   ' 禁止绘图。
End Sub

Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
   If PaintNow Then
      PSet (X, Y)      ' 画一个点。
   End If
End Sub

Private Sub Form_Load ()
   DrawWidth = 10      ' 使用更宽的刷子。
   ForeColor = RGB(0, 0, 255)   ' 设置绘图颜色。
End Sub

TOP

高啊,看到自己发的真是汉颜啊

TOP

从MSDN中找的。

TOP

对了,我的VB没有帮助,就是msdn没法安装是怎么回事啊

TOP

没办法安装可能版本不对,MSDN必需要安装,如果你学编程不装MSDN,别人也帮不了你了。实再不行,重装系统,也要把MSDN装上。

TOP

我的VB是在网上下的,在装MSDN时,它让我插盘,问题就出来了,我哪有什么盘啊。我把地址指向安装文件也不行,所以到现在还没有呢。我想安不上,不是系统的事,因为我有三台电脑,没一个能安的,而且每次下载的地方都不一样,那请问班主,有没有 专门的MSDN啊

TOP

 12 12
发新话题