3

短縮版:

HWND/HINSTANCE にアクセスできない場合、DirectInput を初期化して使用するにはどうすればよいですか?

背景情報:

現在、プログラムのほとんどの部分で SFML を使用しており、特にウィンドウの作成に使用しています。魅力のように機能します。しかし、私は SFML の入力システムに完全に満足しておらず (たとえば、XBox 360 ゲームパッド用の XInput が必要です)、自分で書きたいと思っています。

XInput の部分は既に書きましたが、他のゲームパッド/ジョイスティック/... には DirectInput も必要です。SFML は Windows 関連のコードをユーザーから隠しているため (当然のことながら)、hwnd または hinstance にアクセスすることはできません。それなしで DirectInput を使用するにはどうすればよいですか? ウィンドウがアクティブなときだけでなく、常に入力をキャッチしているのではないでしょうか? (その後、ウィンドウの(非)アクティブ化イベントに基づいてフィルタリングできます。)

ありがとう、

ウォンコさん

4

2 に答える 2

3

ウィンドウを見つけるのはそれほど難しくありません。EnumThreadWindows() と GetCurrentThreadId() を使用してください。

DirectInput はどこにもウィンドウ ハンドルを必要としないことに注意してください。DirectInput8Create() でインスタンス ハンドルが必要なだけです。GetModuleHandle(NULL) は SFML アプリに適しています。

于 2010-12-28T15:57:36.157 に答える
1

HINSTANCE を取得するには、GetModuleHandle(NULL) を呼び出すことができます。

于 2010-12-28T17:38:56.450 に答える