1

ほとんどの人が知っているように、getch はユーザーがキーを押してから値を返すまで待機します。ユーザーが現在キーを押しているかどうかを確認する方法はありますか? これが私がやろうとしていることです:

while(1){
char x = getch();
if (x){
//blah
}
else if(y == true){
//blah
}
}

助言がありますか?

4

2 に答える 2

2

関数がありkbhit()ます (または_kbhit()、Microsoft のライブラリを使用している場合)。

MSDN: http://msdn.microsoft.com/en-us/library/58w7c94c(VS.80).aspx

「キーが押された場合、_kbhit はゼロ以外の値を返します。それ以外の場合は、0 を返します。」

編集:一部のコメンターが指摘したように、それは標準ではありません。

于 2010-10-17T19:59:29.160 に答える
0

キーが押されるまでスクリプトを一時停止するだけの場合は、 getch が機能しますが、押された文字が画面に表示されないようにする場合 (または、押されたキーを気にしない場合) を使用できます

system("pause > NUL");

Windowsの「一時停止」コマンドを呼び出し、表示されたテキストと入力(通常は「続行するには何かキーを押してください...」と表示されます)を空の深淵にルーティングします。

別の方法として、GetAsyncKeyState() などの関数を使用し、すべての入力コードをループして、現在押されているキーがあるかどうかを確認します。この方法は、処理ループを実行しようとしていて、ユーザーが特定のキー (たとえば、Escape) を押したときにブレークアウトしたい場合に、はるかにうまく機能します。これを使用して、ユーザーが何らかのキーを押しているかどうかを確認すると、かなりの処理能力が浪費されます。

于 2010-10-17T22:18:49.197 に答える