2

我正在编写一个 C++ CLI 应用程序,如何检测用户是否按下了任何键。我已经在 c# 中看到过,但是如何在 c++ 中实现

while(1)
     {
      while(/* code to check if any key is pressed*/)
           {        //rest of the code
                    // sleep function
           }
     }

提示:就像在 CLI 游戏中,当按键被按下时移动或采取某些动作,或者如果没有输入则不做任何事情。

4

3 回答 3

0

至少在 Windows 上你可以使用GetKeyState

于 2012-11-04T10:05:44.313 回答
0

我们可以在 C++ 中使用 _kbhit() 函数。如果按下任何键,_kbhit 等于 1。您必须清除 _kbhit 缓冲区,否则它将保持 1。清除方法是 character = getch(); 这会将最后输入的键保存在字符中,您可以比较并决定对哪个键执行哪个操作。

于 2012-11-09T10:34:27.453 回答
-1

虽然循环可能会消耗 CPU,但我不建议使用忙等待方法,而是应该考虑事件挂钩。

在这里您可以阅读有关挂钩C++ Win32 键盘事件的 winapi 按键事件

如果您仍然对使用 while 循环感兴趣,您还应该在检查条件为假后通过休眠来释放一些资源(例如 nanosleep )

于 2012-11-04T11:31:08.953 回答