繁体   English   中英

如何在C ++中获得直接键盘输入?

[英]How to get direct keyboard input in C++?

我目前正在Windows中用C ++编写游戏。 到目前为止一切都很好,但是我的菜单看起来像这样:

1,往北走

2.往南走

3.东行

4,往北走

5,库存

6,退出

插入选择-

它工作正常,但我已经使用了一段时间,希望您可以使用向上和向下箭头进行导航。 我将如何去做呢?

提前考虑

您是否考虑过使用控制台UI库(例如ncurses)

在Windows中,您可以使用通用的kbhit()函数。 根据是否有键盘击中,此函数返回true / false。 然后,您可以使用getch()函数读取缓冲区中存在的内容。

while(!kbhit()); // wait for input
c=getch();       // read input

您也可以查看扫描代码。 conio.h包含必需的签名。

您可以使用GetAsyncKeyState 它使您可以从箭头,功能按钮(F0,F1等)和其他按钮直接获得键盘输入。

这是一个示例实现:

// Needed for these functions
#define _WIN32_WINNT 0x0500
#include "windows.h"
#include "winuser.h"
#include "wincon.h"

int getkey() {

    while(true) {
        // This checks if the window is focused
        if(GetForegroundWindow() != GetConsoleWindow())
            continue;

        for (int i = 1; i < 255; ++i) {
            // The bitwise and selects the function behavior (look at doc)
            if(GetAsyncKeyState(i) & 0x07)
                return i;

        }

        Sleep(250);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM