アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語でキーの入力判定をするプログラムを作ってい
ます。下の例だとeやエンターを押したときは認識できる
のに、方向キー↑を押したときはなぜか無反応です。

コンパイラはボーランドでOSはXPでコンパイルした
のですが、何がいけなかったのでしょうか?


#include <stdio.h>
#include <conio.h>
#include <windows.h>

void check(void){
int key;
key = getch();

switch (key){
case 'e':
puts("e");
break;
case VK_RETURN:
puts("ENTER");
break;
case VK_UP:
puts("UP");
break;
}

}

int main(void)
{
while(1){
check();
}
return 0;
}

A 回答 (2件)

getch がVK_UPを返すのではないです。


↑の場合0と0x48の2つのコードが返ります
    • good
    • 2
この回答へのお礼

ありがとうございます。その数値で見事動作しました!

お礼日時:2006/04/22 03:12

getch で戻ってくるのは、仮想キーコード(VK)ではないので、VK_UP は来ません。


リターンや英字などは、たまたまVKと同じ値が割り当てられているので、動いているだけです。
ASCIIコードを調べるなりしてみてください。
# VTかなにか来てませんか。(うろ覚え
    • good
    • 1
この回答へのお礼

ありがとうございます。調べたらこんな感じでした。
case 0x4b:
puts("LEFT");
break;
case 0x50:
puts("DOWN");
break;
case 0x4d:
puts("RIGHT");
break;
case 0x48:
puts("UP");
break;

お礼日時:2006/04/22 03:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!