ページ 11

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

Posted: 2008年12月19日(金) 08:56
by dic
現在 DirectInput8 のライブラリを作っているのですが
ジョイスティックの入力取得の挙動がおかしいので
どこかが間違っていると思うのですが、SDKのサンプルには
載っていなかったので質問させてもらいます

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

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

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

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

Posted: 2008年12月19日(金) 13:24
by GPGA
問題なのはTest2を呼び出している位置です。
GetMessageはメッセージが飛んでくるまでは、内部でスリープします。

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

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

Posted: 2008年12月19日(金) 13:43
by toyo
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);
		}
	}

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

Posted: 2008年12月19日(金) 18:13
by dic
PeekMessage() 関数を使用することで解決しました
ありがとうございました