如何通过C / C ++实现未阻塞的键盘缓冲区窗口

时间:2014-10-10 07:47:31

标签: c windows winapi

如何通过C / C ++实现未阻塞的键盘缓冲区窗口?

我可以在Linux中使用fcntl( 0, F_SETFL, O_NONBLOCK);。 但我不知道如何在Windows中实现这一点?

2 个答案:

答案 0 :(得分:1)

通过调用GetStdHandle或打开伪文件CONIN$来获取控制台输入句柄。

然后拨打SetConsoleMode,省略ENABLE_LINE_INPUT标志。

这为您提供了无缓冲的控制台输入。

答案 1 :(得分:0)

在Windows上使用_kbhit()函数很容易

http://msdn.microsoft.com/en-us/library/58w7c94c.aspx

返回值
     如果已按下某个键,_kbhit将返回非零值。否则,它返回0.

备注
     _kbhit函数检查控制台是否有最近的击键。如果函数返回非零值,则按键在缓冲区中等待。然后程序可以调用_getch或_getche来获得击键。

常规必需标题
  _kbhit