【发布时间】:2022-01-12 00:15:33
【问题描述】:
我在检测 C++ 控制台应用程序中的箭头键按下时遇到了问题。我已经尝试了我在这里和其他教程网站上找到的所有内容,但是每当我按下箭头时,它们都会给我同样的东西:
Process returned 0 <0x0> execution time : 2.249 s
Press any key to continue.
这是我尝试过的所有检测按键的方法,结果都是一样的。这些是我的代码中仅剩的两个,其他我尝试删除而不是注释掉。
方法一:
c1 = getch();
if(c1 == 0)
{
c2 = getch();
if(c2 == 72) {cout << endl << "Up Arrow" << endl;}
else if(c2 == 80) {cout << endl << "Down Arrow" << endl;}
else{cout << endl << "Incorrect Input" << endl;}
}
方法二:
switch(getch()) {
case 65:
cout << endl << "Up" << endl;//key up
break;
case 66:
cout << endl << "Down" << endl; // key down
break;
case 67:
cout << endl << "Right" << endl; // key right
break;
case 68:
cout << endl << "Left" << endl; // key left
break;
}
我的代码中是否有一些错误让我回到我的主要方法,或者它是否跳过了一些代码?有没有更快的方法来做到这一点?我几乎 100% 确定我的其他代码与此问题没有任何关系,因为我将代码与程序的任何其他方面隔离开来,并且我一直遇到同样的问题。
再次,我尝试了所有我能找到的获取箭头键的方法,但我一直遇到同样的问题。如果重要的话,我使用的是 Windows 8 Samsung ATIV Smart PC 并使用键盘底座。
提前感谢您的帮助。
【问题讨论】:
-
你从哪里得到这些字符代码的?它们只是大写字母,例如,尝试在第一个示例中按 H,在第二个示例中按 A,看看会发生什么。
-
@PeterJ,这是
getch的福利。不过,ReadConsoleInput会是更合适的选择。 -
@chris,我在哪里可以找到一个很好的例子?
-
this one 怎么样?
-
答案可能在这个questions top answers
标签: c++ windows-8 console-application arrow-keys