• ベストアンサー

押しっぱなしの処理

今Windows APIでゲームを作っています。 例えばキャラクターがマスを移動するときに左ボタンを押すと左に動き 押し続けると一定時間あいたあとにある速さで連続して左に動きます。 case WM_KEYDOWN: if(wParam == VK_LEFT){ Move(LEFT); } 現状のプログラムはこんな感じです。 それを押し続けて時間があいてからではなくすぐに左に動くようにしたいです。 それとその後の左に行き続ける速さもできれば調節したいです。 そうするにはどうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>左ボタンを押すと左に動き >押し続けると一定時間あいたあとにある速さで連続して左に動きます。 WM_KEYDOWNメッセージで処理している…ということは、「キーリピート」に反応しているのでしょう。 # マウスのボタンでもキーリピート効くんですねぇ……試したこと無かったですが。 >それを押し続けて時間があいてからではなくすぐに左に動くようにしたいです。 メッセージで処理している場合は…無理じゃないでしょうかね? スレッド作って、GetKeyState()で自分で状態を見る。ということになるかと。 >それとその後の左に行き続ける速さもできれば調節したいです。 スレッド内でのGetKeyState()のコール頻度などで制御…でしょうかね。 あとは…DirectInput使うとか。 …使ったことないんですけど。 「DirectInput マウス ボタン」辺りで検索すればみつかるんじゃないでしょうか。

cern5100
質問者

お礼

回答ありがとうございます。 調べてみます。

関連するQ&A