鼠标和键盘事件用 shift 参数判断是否按下了 SHIFT、CTRL 和 ALT 键,以及以什么样的组合(如果存在)按下这些键。如果按 SHIFT 键,则 shift 为 1;如果按 CTRL 键,则 shift 为 2;如果按 ALT 键,则 shift 为 4。应使用这些键值的总和来判断这些组合。例如,同时按下 SHIFT 和 ALT 键时 shift 等于 5 (1 + 4)。
如图 11.5 所示,shift 中的三个最不明显位对应 SHIFT、CTRL 和 ALT 键的状态。
图 11.5 位如何表示 SHIFT、CTRL 和 ALT 键的状态
根据 SHIFT、CTRL 和 ALT 键的状态可在 shift 中设置任一位或设置所有位。下表列出这些值和常数:
二进制值 | 十进制值 | 常数 | 意义 |
001 | 1 | vbShiftMask | 按 SHIFT 键。 |
010 | 2 | vbCtrlMask | 按 CTRL 键。 |
100 | 4 | vbAltMask | 按 ALT 键。 |
011 | 3 | vbShiftMask + vbCtrlMask | 按 SHIFT 键和 CTRL 键。 |
101 | 5 | vbShiftMask + vbAltMask | 按 SHIFT 键和 ALT 键。 |
110 | 6 | vbCtrlMask + vbAltMask | 按 CTRL 键和 ALT 键。 |
111 | 7 | vbCtrlMask + vbAltMask + vbShiftMask | 按 SHIFT、CTRL 和 ALT 键。 |
象对鼠标事件的 button 参数那样,可将 If匱hen匛lse 语句或 And 操作符与 Select Case 语句组合使用以判断是否按下 SHIFT、CTRL 和 ALT 键以及以什么样的组合(若存在)按下这些键。
打开一个新工程并将变量 ShiftTest
添加到窗体的声明部分:
Dim ShiftTest as Integer
将下列代码添加到窗体的 MouseDown 事件中:
Private Sub Form_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ShiftTest = Shift And 7 Select Case ShiftTest Case 1 '
或vbShiftMask
Print "You pressed the SHIFT key."
Case 2 '
或vbCtrlMask
Print "You pressed the CTRL key."
Case 4 '
或vbAltMask
Print "You pressed the ALT key."
Case 3
Print "You pressed both SHIFT and CTRL."
Case 5
Print "You pressed both SHIFT and ALT."
Case 6
Print "You pressed both CTRL and ALT."
Case 7
Print "You pressed SHIFT, CTRL, and ALT."
End Select
End Sub