2014-10-10 76 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