| |||
|
カーソルキー操作でウィンドウ移動
| |||
Windowsではメッセージのやり取りにより各種コントロールなどのオブジェクトを制御しており、 ウィンドウもまた、メッセージを渡して処理を行わせ、何らかのイベントを起こすとメッセージを返します。 HSPで作成したと言えど、生成されたウィンドウは上記の対象となっているので、 例えば、送信Win32メッセージに「WM_SYSCOMMAND(=0x0112)」を、 送信パラメータに「SC_MOVE(=0xF010)」を指定すれば、ドラッグ中はカーソルキーで位置を変更できます。 メッセージのやり取りを行うにはobjsend命令(HSP2)、sendmsg命令(HSP3)を使用し、 メッセージの送り先は自ウィンドウとします。HSP3ではシステム変数から簡単に取得できますが、 HSP2ではBMSCR構造体からしか取得ができませんし、 何より、objsend命令はHSP3のsendmsg命令と同じ内容であるものの、 メッセージの送信先対象がコントロール(HSPでのオブジェクト)に限定されており、 パラメータに指定するのは1つ目のオブジェクトを0としたオブジェクトIDとなっています。 コレは表向きなもので、実はオブジェクトIDを指すというより、 BMSCR構造体の要素41(hCld)からの要素番号を指しているので、 ウィンドウハンドルが保持されている要素13(hwnd)を指せば、ウィンドウを指定したことになるのです。 HSP2「objsend 13 - 41, 0x0112, 0xF010, 不使用変数(=0), 0」 HSP3「sendmsg hwnd, 0x0112, 0xF010, 不使用(=0)」 上記はカーソルキー指定によるウィンドウ位置の変更方法ですが、 コチラにウィンドウ内ドラッグで移動する方法を書いています。併せてご覧ください。 | |||
![]() | |||
| |||
![]() | |||
|