0

Windows でキーを押したままにすると、キーが 1 回押されてから、約 0.3 秒のわずかな遅延があり、その遅延の後で初めてキーを連続して押し始めます。このようなもの: x (0.3 秒の遅延) xxxxxxxx。

ボタンが押されたかどうかを検出するために kbhit() を使用すると、0.3 秒の遅延でボタンが検出されないため、その時間内に目的のコードが実行されません。

どうすればこれを修正できますか? (Windows コントロールで遅延を最小 (0.25 秒) に設定することは、私にとってはオプションではありません。)

kbhit() と getch() のすべての可能な組み合わせを既に試しました。

while(TRUE){
   if (kbhit()) {
     button = getch();
   } else {
     button = 'x';
   }

   switch (button) {
     case 'a':
       ToDo();
       break;
   }
}

私の例で a を押すと、最初の 1 回目から 0.3 秒の休憩なしで ToDo() を継続的に実行する必要があります。しかし、そうではありません。

4

1 に答える 1

1

kbhitキーが押されたかどうかはチェックしません。まったく異なる何かを意味するキーストロークがバッファにあるかどうかのみをチェックします。

Windowsでは、次のような別の機能を使用する必要がありますGetAsyncKeyState

于 2019-01-25T21:49:03.627 に答える