ページ 11

dinputを使用した時MessageBoxのボタンが押せなくなる

Posted: 2021年2月09日(火) 14:57
by mnmndhh
初めまして。タイトル通りなのですが、dinputを使用してキーが押されたときMessageBoxを表示するプログラムを実行した時ボタンが押せなくなります。試しにif文をコメントアウトすると押せるようにます。どうしたらボタンが押せるようになりますか。

コードで表したらこんな感じになります。

コード:

if (keys.GetKeyValue(DIK_G))
{
	MessageBoxA(nullptr, "test", "title", MB_OKCANCEL);
}
このコードをif文をコメントアウトするとメッセージボックスのボタンが押せるようになります。

コード:

// if (keys.GetKeyValue(DIK_G))
{
	MessageBoxA(nullptr, "test", "title", MB_OKCANCEL);
}
ちなみに、キーの状態取得のコードはこうなってます。

コード:

bool Keyboard::GetKeyValue( int key) const
{
	return mCurrKeyboard[key] & 0x80;
}
https://gamedev.net/forums/topic/357908 ... d/3350317/
上記のサイトの方も同じような症状でしたので、メッセージボックスを表示する前にUnacuireを挟んでも解決しませんでした。

Re: dinputを使用した時MessageBoxのボタンが押せなくなる

Posted: 2021年2月09日(火) 22:16
by 参照魚
問題がある場所は提示されているコードの周りではなく、DirectInputの初期化と毎ループの入力読み取り周りだと思われます。もしDirectInput周りが何かしらのライブラリィでラッピングされているのであれば、そのライブラリィとmCurrKeyboardの接続部分にあるとおもいます。