检测SHIFT、CTRL及ALT键的状态 来源
本站原创 佚名
鼠标和键盘事件用 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
关联文档