Одновременное нажатие нескольких клавиш.
Данный пример позволяет определить, какие клавиши пользователь нажал одновременно.
Данный пример идеально применим при создании игрушек, когда необходимо пользоваться клавишами управления (4 серые клавиши со стрелками).
Добавьте на форму 5 элементов Label.
'Массив currectKeys содержит в себе все нажатые клавиши
'Для примера, если нажата клавиша ПРОБЕЛ, элемент массива currentKeys(32) = True
'(потому что keyCode клавиши равен 32), а все остальные клавиши = False.
Dim currentKeys(0 To 250) As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'При нажатии на клавишу запускается событие KeyDown снова и снова.
'Идет проверка: нажата клавиша только что клавиша уже нажата
If currentKeys(KeyCode) = False Then
'Обновить массив, если клавиша нажата
currentKeys(KeyCode) = True
If KeyCode = vbKeyLeft Then Label1 = "Left"
If KeyCode = vbKeyRight Then Label2 = "Right"
If KeyCode = vbKeyUp Then Label3 = "Up"
If KeyCode = vbKeyDown Then Label4 = "Down"
If KeyCode = vbKeySpace Then Label5 = "Fire"
End If
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
'Обновить массив, когда клавиша отжата
currentKeys(KeyCode) = False
If KeyCode = vbKeyLeft Then Label1 = ""
If KeyCode = vbKeyRight Then Label2 = ""
If KeyCode = vbKeyUp Then Label3 = ""
If KeyCode = vbKeyDown Then Label4 = ""
If KeyCode = vbKeySpace Then Label5 = ""
End Sub
Private Sub Form_Load()
'Обнулить значения элементов Label
Label1 = ""
Label2 = ""
Label3 = ""
Label4 = ""
Label5 = ""
End Sub
|