読者です 読者をやめる 読者になる 読者になる

DirectInputのSetCooperativeLevelにNULLポインタ

IDirectInputDevice8::SetCooperativeLevelについて。

(日本語)http://msdn.microsoft.com/ja-jp/library/bb205980(v=vs.85).aspx
(英語)http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.idirectinputdevice8.idirectinputdevice8.setcooperativelevel(v=vs.85).aspx

MSDNには第1引数のHWNDにトップレベルのウィンドウのハンドルを要求すると書かれていますが、第2引数のDWORDを以下の通り渡すと第1引数がNULLポインタでもエラーを出さずに通すことができます。

DISCL_BACKGROUND | DISCL_NONEXCLUSIVE

これでウィンドウなしにデバイスのデータを取ることが出来ました。
ウィンドウはいらないけどゲームパッドの入力が欲しい時には使えそうですが、MSDNにNULLポインタを渡した場合どうなるかというのは見当たらなかったのでごにょごにょ・・・。


ちなみに、第1引数をNULLポインタにして第2引数に

DISCL_BACKGROUND | DISCL_EXCLUSIVE
DISCL_FOREGROUND | DISCL_EXCLUSIVE
DISCL_FOREGROUND | DISCL_NONEXCLUSIVE

などを渡すと戻り値でE_HANDLEを返してきてエラーとなります。