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

时间:2012-02-17 10:12:48

标签: c++ input keyboard

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

1.Go North

2.Go South

3.GoGo

4.Go North

5.Inventory

6.Exit

插入选项 -

它工作正常,但我一直在使用那种东西而宁愿使用向上和向下箭头导航。我该怎么做呢?

提前问候

3 个答案:

答案 0 :(得分:4)

您是否考虑使用控制台UI库,例如ncurses

答案 1 :(得分:2)

在Windows中,您可以使用通用kbhit()功能。此函数返回true / false,具体取决于是否有键盘命中。然后,您可以使用getch()函数读取缓冲区中的内容。

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

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

答案 2 :(得分:0)

您可以使用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);
    }
}