2014-10-10 26 views
0

如何通过C/C++实现畅通的键盘缓冲窗口?如何通过C/C++实现畅通的键盘缓冲窗口

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

+0

请看下面的Windows功能:[GetKeyboardState](http://msdn.microsoft.com/en-us/library/windows/desktop/ms646299(V = vs.85 ).aspx),[GeyKeyState](http://msdn.microsoft.com/en-us/library/windows/desktop/ms646301(v = vs.85).aspx)和[GetAsyncKeyState](http:// msdn .microsoft.com/en-us/library/windows/desktop/ms646293(v = vs.85).aspx) – 2014-10-10 08:00:59

回答

1

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

然后致电SetConsoleMode,省略ENABLE_LINE_INPUT标志。

这给你无缓冲的控制台输入。

0

它易于使用_kbhit()在Windows

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

返回值
如果一个键被按下_kbhit返回一个非零值函数。否则返回0.

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

日常必需的头
_kbhit

+0

虽然此链接可能回答此问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 – 2014-12-08 11:41:04