Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ サンプル」を参照すること。
ScrawlB サンプルでは、マウスを排他モードで使用する方法、マウス イベントのイベント通知を使用する方法、およびバッファリング データを取得して解釈する方法を示す。
ソース ファイル : (SDK ルート)\Samples\Multimedia\VBSamples\Dinput\Src\Scrawlb
実行可能ファイル :(SDK ルート)\Samples\Multimedia\VBSamples\Dinput\Bin\Scrawlb.exe
左ボタンを押し下げると描画する。右ボタンをクリックすると、コンテキスト メニューが表示される。[Suspend] を選択する (または Alt キーを押して離す) と、システム カーソルが解放されるので、ウィンドウを移動したり、ウィンドウのサイズを変更したり、別のアプリケーションをクリックしたりできる。描画を再開するには、クライアント ウィンドウをもう一度クリックする。
Alt + Tab キーを押して別のアプリケーションに切り替えると、ScrawlB はクライアント ウィンドウにマウスを渡すと同時に、マウスを回復する。
アプリケーションは、WM_ENTERMENULOOP メッセージをインターセプトするために、メイン ウィンドウをサブクラス化する。ユーザーが Alt キーを押しながらスペース キーを押してシステム メニューを開いたかどうかを調べるには、これが最適な方法である。これがわかれば、ScrawlB はマウスを解放できる。ただし、サブクラス化すると、デバッグ時に問題が生じることがある。modMain.bas のコメントを参照すること。
frmCanvas モジュールは、入力イベントを処理するために DirectXEvent を実装する。また、このフォームでは、DirectInput がマウスに対するアクセス権を持たないときに Windows マウス イベントを取得するために、Visual Basic の MouseMove イベントを使用する。このイベントがトリガされると、アプリケーションはカーソルがクライアント ウィンドウに戻ったことを認識するので、マウスを再取得することができる。