编写代码,使之对鼠标事件作出不同的响应,这取决于用到哪个鼠标按钮或者是否按下了 SHIFT、CTRL、ALT 键,这样一来应用程序的功能将更强大。为提供这些选择,请使用 MouseDown、MouseUp 和 MouseMove 事件过程及 button、shift 参数。本章后面的“检测 SHIFT、CTRL 和 ALT 键的状态”介绍了使用 shift 参数的方法。
MouseDown、MouseUp 和 MouseMove 事件用 button 参数判断按下的是哪个鼠标按钮或哪些鼠标按钮。button 参数是位域参数─ 一个值,其每位代表一个状态或条件。这些值被表示成整数。如图 11.4 所示,三个最不明显位(最低位)分别表示鼠标的左按钮、右按钮和中按钮。
图 11.4 如何用位表示鼠标的状态
每一位的缺省值为 0 (False)。如果未按下任何按钮,则三位的二进制值为 000。如果按下左按钮,则二进制值(或模式)变为 001。左按钮的位值由 0 (False) 变为 1 (True)。
button 参数用十进制数值或常数表示这些二进制模式。下表列出了位的二进制值、相应的十进制值和 Visual Basic 常数:
二进制值 | 十进制值 | 常数 | 意义 |
001 | 1 | vbLeftButton | 按下左按钮。 |
010 | 2 | vbRightButton | 按下右按钮。 |
100 | 4 | vbMiddleButton | 按下中间按钮。 |
注意 Visual Basic 提供常数来表示 button 和 shift 参数的二进制值。这些常数可与相应的十进制数值互换使用。但是,并非所有值都有对应常数。直接将十进制值相加就可导出某些按钮值或按钮与/或 shift 键组合的值。
将十进制数值 4 分配给鼠标中间按钮。同时按下左、右按钮就会产生单个数值 3 (1+2)。对于三按钮鼠标,同时按下三个按钮将产生十进制数值 7 (4+2+1)。下表中列出从可能的按钮组合中导出的其它按钮值:
二进制值 | 十进制值 | 常数 | 意义 |
000 | 0 | 未按下任何按钮。 | |
011 | 3 | vbLeftButton + vbRightButton | 按下左、右按钮。 |
101 | 5 | vbLeftButton + vbMiddleButton | 按下左按钮和中间按钮。 |
110 | 6 | vbRightButton + vbMiddleButton | 按下右按钮和中间按钮。 |
111 | 7 | vbRightButton + vbMiddleButton + vbLeftButton | 按下三个按钮。 |