|
Отслеживание нажатий на клавишы клавиатуры |
|
|
Чем мне понравился этот пример? Тем, что без использования таймеров ваша программа может реагировать на нажатия клавиш клавиатуры. Причем время реакции отклика на нажатия, как мне показалось, гораздо выше.
Вам понадобится элемент CommandButton и элемент PictureBox. Private m_bPlay As Boolean
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As
Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
Dim i As Long
Dim iLast As Long
If Command1.Caption = "&Stop" Then
m_bPlay = False
Command1.Caption = "&Play"
Else
Command1.Caption = "&Stop"
m_bPlay = True
i = 1
Do
' Determine if the left or right keys are pressed:
If (GetAsyncKeyState(vbKeyLeft)) Then
' Diminish the colour
i = i - 1
ElseIf (GetAsyncKeyState(vbKeyRight)) Then
' Increase the colour
i = i + 1
End If
' Colour within bounds:
If (i < 1) Then i = 15
If (i > 15) Then i = 1
' If colour has changed, change the display:
If (iLast <> i) Then
With Picture1
.Cls
.ForeColor = QBColor(i)
' Generate a RGB complement for the background:
.BackColor = &HFFFFFF And (Not QBColor(i))
.CurrentX = 64 * Screen.TwipsPerPixelX
.CurrentY = 64 * Screen.TwipsPerPixelY
Picture1.Print Hex$(QBColor(i))
End With
End If
iLast = i
' This is here to stop the animation getting too fast to see:
Sleep 25
' Ensure we can still click buttons etc
DoEvents
Loop While m_bPlay
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If (Command1.Caption = "&Stop") Then
Command1_Click
End If
End Sub
|
|
|
|
|
|
|