我正在编写一个程序,使用getch()
扫描箭头键。到目前为止,我的代码是:
switch(getch()) {
case 65: // key up
break;
case 66: // key down
break;
case 67: // key right
break;
case 68: // key left
break;
}
问题是当我按下 'A'
、'B'
、'C'
或 'D'
键时,代码也会执行,因为 65
是十进制代码表示的 'A'
等等...
有没有方法在不调用其他键的情况下检测箭头键?
谢谢!
getch()
的时候,对于“特殊”键,它实际上会返回两次。第一次返回0,然后是特殊键的代码,这样你就可以将其与其他键区分开来。 - FatalErrorgetch()
两次。第一次调用会返回0(即下一个值将是特殊键),然后在第二次调用getch()
时,它会返回一个不同的值,表示哪个特殊键被按下。请注意,getch()
是DOS时代的非标准工具,因此它可能因编译器而异。但是这里有一个MSDN上的示例:https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/getch-getwch?view=vs-2019 - FatalError