【发布时间】:2020-05-10 00:32:38
【问题描述】:
我正在尝试从控制台获取箭头键输入,但问题是当我按下该键时,它会在循环中提供两次输出。我试图清除 INPUT_RECORD 变量,但常用方法似乎不起作用。
#include <iostream>
#include <windows.h>
#include <WinUser.h>
using namespace std;
int main()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
DWORD NumInputs = 0;
DWORD InputsRead = 0;
INPUT_RECORD irInput;
irInput.Event.KeyEvent.wVirtualKeyCode = 0;
GetConsoleMode(hInput, &NumInputs);
SetConsoleMode(hInput, 0);
GetNumberOfConsoleInputEvents(hInput, &NumInputs);
while (true)
{
ReadConsoleInput(hInput, &irInput, 1, &InputsRead);
switch (irInput.Event.KeyEvent.wVirtualKeyCode)
{
case VK_DOWN:
cout << "DOWN";
break;
case VK_LEFT:
cout << "LEFT";
break;
case VK_RETURN:
cout << "ENTER";
break;
case VK_RIGHT:
cout << "RIGHT";
break;
case VK_UP:
cout << "UP";
break;
}
}
}
【问题讨论】:
-
您好,请问有什么解决方法吗?请随时为有相同问题的人标记它。
-
解决我问题的代码如下...
标签: windows winapi visual-c++ user32