ジョイスティックの挙動がおかしい?

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

ジョイスティックの挙動がおかしい?

#1

投稿記事 by dic » 16年前

現在 DirectInput8 のライブラリを作っているのですが
ジョイスティックの入力取得の挙動がおかしいので
どこかが間違っていると思うのですが、SDKのサンプルには
載っていなかったので質問させてもらいます

ソースは添付したものになりますが
肝心な入力の取得は CDxInput8::Test2() になります

初期化などで間違っているかもしれませんし、
全体にわたって見てみただけると助かります

現在の挙動はジョイスティックの十字キーを押すと何も反応ないのですが、
キーボードを押しっぱなしにした状態で十字キーを押すと正常に反応するという
現象が起きてしまいます
どこかがメモリエラー発生しているのかよくわからないのです
助言をお願いします

GPGA

Re:ジョイスティックの挙動がおかしい?

#2

投稿記事 by GPGA » 16年前

問題なのはTest2を呼び出している位置です。
GetMessageはメッセージが飛んでくるまでは、内部でスリープします。

従って、キーボード操作やマウス操作など、ウインドウメッセージが飛んで来た時しか
Test2が呼び出されることはありません。

toyo

Re:ジョイスティックの挙動がおかしい?

#3

投稿記事 by toyo » 16年前

PeekMessage( )でメッセージのチェックをして処理したらどうでしょう

	for (;;) {
		if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
			if (!GetMessage(&msg, NULL, 0, 0)) {
				break;
			}
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
		else {
			gInput8.Test2();
			Sleep(10);
		}
	}

dic

Re:ジョイスティックの挙動がおかしい?

#4

投稿記事 by dic » 16年前

PeekMessage() 関数を使用することで解決しました
ありがとうございました

閉鎖

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