簡體   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