スクリーンセーバー・ディスプレイオフ
ゲームパッドでゲームをしているとマウスもキーボードもさわっていないため、スクリーンセーバーが起動して非常に邪魔なのはよくある話。ディスプレイが真っ暗になっちゃったりとかね。私もこれのためにスクリーンセーバーはオフにしています。実はソフト側での対処法があるんですよね。
id:NyaRuRu:20080925
WM_SYSCOMMANDは(wParam&0xfff0)で判別するということは確認しましたので結局はここに書いてあるコードとほぼ同じになりました。動作確認はしていない。MSの資料っていい加減なのが多いのよね…。
部室に行って壊れていないパッドをとってきました。隣のMMCが大掃除をしていました。おかげで下に鍵を取りに行く羽目になりました。帰りに日吉駅前でスミスくんに会いました。
(以前の日記より転載)
(壊れた)パッドをつないでいたので分かったことだがパッドのIDirectInputDevice8*をスマートポインタに突っ込む時に、Relaseするデリータを指定し忘れてデフォルトでdeleteかけられてぶっ壊れた。テストしとけよ…。
これについて読んだ瞬間プフーって吹いたとかボロクソ言われました。いやネタだけど。間接的にではあるものの、COMポインタにdeleteかけてたんですよね。
//pInputDevice->Release(); delete pInputDevice;
// 誤 shared_ptr<IDirectInputDevice8> pDevice(pTmp); // 正 shared_ptr<IDirectInputDevice8> pDevice(pTmp, iunknown_deleter());
もういいよ。みんな好きに使っていいよ。
struct iunknown_deleter { void operator()(IUnknown *p){ p->Release(); } };