如何检测用户是否在C ++(控制台)中按下了任何键?

时间:2012-11-04 08:40:48

标签: c++ keyboard keypress keydown visual-c++-2010

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

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

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

3 个答案:

答案 0 :(得分:0)

在Windows上至少可以使用GetKeyState

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

虽然循环可以消耗CPU,但我不建议忙于等待的方法,而应该考虑事件挂钩。

在这里,您可以阅读有关winapi击键事件挂钩C++ Win32 keyboard events

的信息

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