Last Update : 2007/04/xx
ウィンドウ関連 || オブジェクト関連1 || オブジェクト関連2
sendmsg命令の第1パラメータで指定するウィンドウハンドルの値は、HSPのシステム変数hwndに格納されてます。変数名の由来は「handle of window」から。screen命令やbgscr命令で表示されるウィンドウIDごとにこのハンドル値は異なります。
□ マウスによる自ウィンドウの移動
onclick gosub *onjump
stop
*onjump
; マウスが左クリックされると、wparam に 1 が返る。
; WM_NCLBUTTONDOWNメッセージ
if wparam = 1 {
sendmsg hwnd, $A1, 2
return
}
return
□ 右クリックでシステムメニューの表示
; ※エディタの[HSP]メニューの[HSP拡張マクロを使用する]を要有効
onclick gosub *onjump
stop
*onjump
; マウスが右クリックされると、wparamに2が返る。
if wparam = 2 {
sendmsg hwnd, $313, , ginfo(0) | ginfo(1) * $10000
return
}
return
□ ウィンドウタイトル名の取得
; title命令の逆パターン
; 文字列取得用の領域をあらかじめ確保(64バイト)
sdim textbuf
; ウィンドウメッセージ WM_GETTEXT
sendmsg hwnd, $D, 64, varptr(textbuf)
mes "["+textbuf+"] ("+stat+"byte)
以下はWM_SYSCOMMANDメッセージ(0x0112)で実現できるもの。
□ 自ウィンドウの最小化 (SC_MINIMIZE)
; タスクバー上にウィンドウ最小化 sendmsg hwnd, $112, $F020 wait 100 ; ウィンドウを元の位置に戻す(SC_RESTORE) sendmsg hwnd, $112, $F120
□ 自ウィンドウの最大化 (SC_MAXIMIZE)
; Win32 API関数でウィンドウスタイルを変更して、サイズ可変ウィンドウにする必要あり ; (→ HSP3 あれこれ ウィンドウ編) sendmsg hwnd, $112, $F030
□ Windowsのスタートメニューの表示 (SC_TASKLIST)
sendmsg hwnd, $112, $F130
□ スクリーンセーバーの起動 (SC_SCREENSAVE)
; スクリーンセーバーの設定が有効になってる必要あり sendmsg hwnd, $112, $F140
□ ディスプレイの省電力表示 (SC_MONITORPOWER)
; 省電力モードが実現可能なディスプレイである必要 sendmsg hwnd, $112, $F170, 1 ; ちなみにディスプレイの電源オフ (省電力モードに移行するものもあり) // sendmsg hwnd, $112, $F170, 2 ; 省電力モード&電源オフからの復帰 // sendmsg hwnd, $112, $F170, -1