【发布时间】:2019-10-25 15:34:24
【问题描述】:
我对按键检测如何与 c++ 一起工作进行了一些搜索,并且我有一个按键检测程序可以检查 向下 和 右箭头键,它可以工作美好的。但是我有另一个非常简单的输入程序,我想知道是否能够检测到用户在其他地方输入时按下了箭头键,即在something1 变量中例子。
这就是我的意思:
#include <iostream>
#include <string>
#include <Windows.h>
#include <conio.h>
using namespace std;
#define KEY_RIGHT 77
#define KEY_DOWN 80
string something1, something2, something3;
bool loggedIn = false;
int value = 0;
void type() {
cout << "Type something: ";
cin >> something1;
cout << "Type something again: ";
cin >> something2;
cout << "Type something one more time: ";
cin >> something3;
}
int main()
{
type();
while (loggedIn == false)
{
value = 0;
switch ((value = _getch())) {
break;
case KEY_DOWN:
cout << "You pressed the Down Arrow Key" << endl;
break;
case KEY_RIGHT:
cout << "You pressed the Right Arrow Key" << endl;
break;
}
}
}
type() 函数要求用户输入 3 个字符串,因此在所有 3 个字符串提示都通过之前,我们不会点击 while 循环。但是有没有办法以某种方式将这两个代码块合并在一起,这样当用户输入变量something1 并点击向下箭头时,他们会在@ 987654325@案例?
我不确定这种事情是否可能,但我认为值得一试。
【问题讨论】:
-
cin >> stringvar在输入行尾之前不会返回,因此无法在中间换行以使用箭头键。您可以使用窗口输入来做到这一点,但这远远超出了简单答案的范围。 -
我已经对 c++ 中的按键检测如何工作进行了一些搜索 -- C++ 语言对按键检测一无所知。这是一个操作系统特定的项目。
-
你需要一个键盘挂钩。查看
SetWindowsHookEx()或RegisterRawInputDevices()以在它们到达cin(或任何其他应用程序)之前从操作系统接收击键事件。
标签: c++ visual-studio winapi