入力状態取得について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
自由闊達

入力状態取得について

#1

投稿記事 by 自由闊達 » 17年前

Visual C++ 2008 Express Editionを使っています。

A~Zのいずれかのキーが入力されてる場合ってのをやりたいのですが、

(GetHitKeyStateAll_2(Key)を使っています)
if(Key[KEY_INPUT_A]==1||Key[KEY_INPUT_B]==1||…(略)…Key[KEY_INPUT_Z]==1){・・・}

とやるしかないんでしょうか?
もっと簡単な方法があったら教えてもらえないでしょうか?

GPGA

Re:入力状態取得について

#2

投稿記事 by GPGA » 17年前

KEY_INPUT_A~KEY_INPUT_Zまでは連番で保障されていないので
リストを作成して、ループでまわしてやるのがわかりやすいと思います。
const int list[/url] = {
	KEY_INPUT_A, KEY_INPUT_B, KEY_INPUT_C, KEY_INPUT_D,
	KEY_INPUT_E, KEY_INPUT_F, KEY_INPUT_G, KEY_INPUT_H,
	KEY_INPUT_I, KEY_INPUT_J, KEY_INPUT_K, KEY_INPUT_L,
	KEY_INPUT_M, KEY_INPUT_N, KEY_INPUT_O, KEY_INPUT_P,
	KEY_INPUT_Q, KEY_INPUT_R, KEY_INPUT_S, KEY_INPUT_T,
	KEY_INPUT_U, KEY_INPUT_V, KEY_INPUT_W, KEY_INPUT_X,
	KEY_INPUT_Y, KEY_INPUT_Z,
};
int i;
for (i = 0; i < sizeof(list) / sizeof(list[0]); ++i) {
	if (Key[list] == 1) {
		break;
	}
}
if (i != sizeof(list) / sizeof(list[0])) {
	// いづれかのキーが押された処理
}
 
としては、いかがでしょうか?

自由闊達

Re:入力状態取得について

#3

投稿記事 by 自由闊達 » 17年前

おぉ!できました!
なるほど、こーゆー方法があったのですね、勉強になります。
教えてくださってどうもありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る