可用 button 参数增强 Scribble 应用程序的功能,在本章前面的“MouseMove 事件”中已描述了该应用程序。当按下左按钮时绘制连续线,释放按钮时则停止绘制,除此之外,当用户按下右按钮时,应用程序将绘制一条从上次绘制点出发的直线。
在编写代码时,留意每个相关事件和预期响应是非常有益的。此处,三个相关事件是鼠标事件:
DrawNow
为 True 并重置绘图坐标;如果按下右按钮,则绘制直线。DrawNow
为 False。DrawNow
为 True,则绘制一条直线。在窗体的声明部分声明变量 DrawNow
:
Dim DrawNow As Boolean
根据触发事件的按钮是左按钮还是右按钮,MouseDown 过程执行不同的操作:
Private Sub Form_MouseDown (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
DrawNow = True
CurrentX = X
CurrentY = Y
ElseIf Button = vbRightButton Then
Line -(X, Y)
End If
End Sub
仅当释放左按钮后,MouseUp 过程才停止绘图:
Private Sub Form_MouseUp (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then DrawNow = False
End Sub
注意,在 MouseUp 过程中,将位设置为 1 (vbLeftButton),这个位就指出已释放鼠标左按钮,因此应停止绘图。
以下 MouseMove 过程和本章前面的“MouseMove 事件”中的 Scribble 应用程序里的过程相同。
Private Sub Form_MouseMove (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If DrawNow Then Line -(X, Y)
End Sub