KeyCodeで、複数同時に対応させるには?


むら  2006-05-14 00:16:16  No: 131408

KeyCode文でキー判定をさせる時、一つボタンを押している時に他のボタンを押すと、先に押していたボタンが無視されてしまいます。
ちなみに、

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyDown Then
    Shape1.Top = Shape1.Top + 30
    End If
End Sub

って感じです。

ゲームを作っているんですが、同時に反応してくれないと困ります。
どうか回答宜しくお願いします。


Hongliang  URL  2006-05-14 01:22:00  No: 131409

キーイベントで(修飾キーの組み合わせを除いて)一つしか送られてこないのは Windows の仕様です。
Win32API の GetKeyboardState 関数を使って全てのキーの状態を取得するか、あるいは KeyDown から KeyUp までキーごとの「押している」フラグを上げておくなどの工夫が必要です。
ただし、キーボードによっては同時に認識するキー数が 3 程度しか無い場合もあることに注意してください。これはプログラムからはどうにもできません。


ひろ  2006-05-20 22:12:30  No: 131410

複数同時押しの認識キー数の制限は、キーボードの物理的な構造による物です。

http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加