在Windows上按住一个键时,它会按下一次,然后会有大约0.3秒的小延迟,只有在此延迟之后,它才会连续不断地按下它。 像这样: x(0.3秒延迟)xxxxxxxx。
如果我使用kbhit()来检测按钮是否被按下,则在0.3秒的延迟中它不会检测到按钮,因此在那段时间内未运行所需的代码。
我该如何解决? (对我来说,在Windows控件中将延迟设置为最小(0.25s)并不是我的选择。)
我已经尝试过kbhit()和getch()的所有可能组合。
while(TRUE){
if (kbhit()) {
button = getch();
} else {
button = 'x';
}
switch (button) {
case 'a':
ToDo();
break;
}
}
在我的示例中按a时,它应连续运行,第一次后没有0.3秒的中断,请运行ToDo()。但事实并非如此。
答案 0 :(得分:1)
kbhit
不检查是否按下了键。它仅检查缓冲区中是否有按键,这意味着完全不同。
在Windows中,您需要使用其他功能,例如GetAsyncKeyState