掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数キーの同時認識 (ID:76487)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
複数キーの同時認識にGetKeyboardStateを用いますが、 こんな方法でも可能かと・・・。 Option Explicit Private Const UPKEY As Long = 1 Private Const DOWNKEY As Long = 2 Private Const RIGHTKEY As Long = 4 Private Const LEFTKEY As Long = 8 Private Const SPEED As Long = 100 Dim lngKeyStatus As Long Dim lngDispIndex As Long Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyUp lngKeyStatus = lngKeyStatus Or UPKEY Case vbKeyDown lngKeyStatus = lngKeyStatus Or DOWNKEY Case vbKeyRight lngKeyStatus = lngKeyStatus Or RIGHTKEY Case vbKeyLeft lngKeyStatus = lngKeyStatus Or LEFTKEY End Select End Sub Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyUp lngKeyStatus = lngKeyStatus And Not UPKEY Case vbKeyDown lngKeyStatus = lngKeyStatus And Not DOWNKEY Case vbKeyRight lngKeyStatus = lngKeyStatus And Not RIGHTKEY Case vbKeyLeft lngKeyStatus = lngKeyStatus And Not LEFTKEY End Select End Sub Private Sub Form_Load() lngDispIndex = 0 Image1(0).Visible = True Image1(1).Visible = False Image1(1).Top = Image1(0).Top Image1(1).Left = Image1(0).Left lngKeyStatus = 0 Timer1.Interval = 100 Timer1.Enabled = True End Sub Private Sub Form_Unload(Cancel As Integer) Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim lngDispIndexNew lngDispIndexNew = (lngDispIndex + 1) And 1 If (lngKeyStatus And UPKEY) <> 0 Then Image1(lngDispIndexNew).Top = Image1(lngDispIndex).Top - SPEED End If If (lngKeyStatus And DOWNKEY) <> 0 Then Image1(lngDispIndexNew).Top = Image1(lngDispIndex).Top + SPEED End If If (lngKeyStatus And RIGHTKEY) <> 0 Then Image1(lngDispIndexNew).Left = Image1(lngDispIndex).Left + SPEED End If If (lngKeyStatus And LEFTKEY) <> 0 Then Image1(lngDispIndexNew).Left = Image1(lngDispIndex).Left - SPEED End If Image1(lngDispIndexNew).Visible = True Image1(lngDispIndex).Visible = False Image1(lngDispIndex).Top = Image1(lngDispIndexNew).Top Image1(lngDispIndex).Left = Image1(lngDispIndexNew).Left lngDispIndex = lngDispIndexNew End Sub >また、画像を移動させるときにImageコントロールだとちらついてしまうのですが、 2枚交互に表示することである程度は抑えられますが、不完全です。 >Pictureboxコントロールを使わなければいけないのでしょうか 通常はGDIデバイスに対しBitbltを使います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.