【发布时间】:2012-05-14 20:18:53
【问题描述】:
我正在编写一个使用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,然后是特殊键的代码,以便您可以将其与其他键区分开来。 -
65仅适用于字符A。您必须使用控制代码来接收这些密钥。看到这个帖子。 stackoverflow.com/questions/2876275/… -
@FatalError 对不起,我迟到了大约 7 年,但你所说的激起了我的好奇心。 getch() 怎么可能返回两次?一个函数只能返回一次,对吧?
-
@AnchithAcharya:你很幸运,因为我还在 7 年后 ;-)。我的意思是,要读取“特殊密钥”,您必须实际调用
getch()两次。第一次调用将返回 0(即表示下一个值将是一个特殊键)。然后在第二次调用getch()时,它将返回一个不同的值,指示按下了哪个特殊键。请注意,getch()是 DOS 时代的非标准工件,因此它很可能因编译器而异。但这是 MSDN 上的一个示例:docs.microsoft.com/en-us/cpp/c-runtime-library/reference/… -
@FatalError 啊,我现在明白了。谢谢!
标签: c character decimal arrow-keys getch