Last Update : 2007/04/xx
ウィンドウ 関連 | ボタン・チェックボックス | 入力ボックス・メッセージボックス | リストボックス・コンボボックス
sendmsg命令の第1パラメータに指定する自ウィンドウ(screen命令、bgscr命令)のハンドル値は、HSPのシステム変数hwndに代入されてます。この変数名の由来は「handle
of window」から。
screen命令やbgscr命令で用意したウィンドウIDごとにハンドルの値が違うので、複数のウィンドウを用意しているなら、hwndの値は別の変数に代入しておくようにしてください。
□ マウスドラッグによる自ウィンドウの移動
screen命令やbscr命令で用意したウィンドウ画面をマウスでドラッグするとウィンドウ自体が動きます。
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 pszText ; WM_GETTEXT sendmsg hwnd, $D, 64, varptr(pszText) mes "["+pszText+"] ("+stat+"byte)
□ ウィンドウタイトル名の変更
title命令と機能的には同じですが、gsel命令で操作先ウィンドウを変えることなくタイトルバーの文字列を変更できます。
// ウィンドウのタイトルバーの文字列変更 screen 0 hWindowID0 = hwnd screen 1 ; WM_SETTEXT sendmsg hWindowID0, $C, , "タイトルを変更したよ〜ん。"
以下はWM_SYSCOMMANDメッセージ(0x0112)で実現できるもの。
□ ウィンドウの最小化
自ウィンドウを最小化して、タスクバー上にアプリケーションを入れます。最小化からの復帰も可能です。
; SC_MINIMIZE sendmsg hwnd, $112, $F020 wait 200 ; ウィンドウを元の位置に戻す(SC_RESTORE) sendmsg hwnd, $112, $F120
□ ウィンドウの最大化
自ウィンドウを最大化します。screen命令やbgscr命令で指定した初期ウィンドウサイズが最大化のベースになります。
ちなみに、HSPのウィンドウは最大化ボタンが無効になってるので、Win32
API関数でウィンドウスタイルを変更すればサイズ可変ウィンドウへ切り替えることが可能です。(→
HSP3 あれこれ ウィンドウ編)
width 200, 200 wait 200 ; SC_MAXIMIZE sendmsg hwnd, $112, $F030
□ Windowsのスタートメニューの表示
Windowsのスタートメニューを単純に開きます。
; SC_TASKLIST sendmsg hwnd, $112, $F130
□ スクリーンセーバーの起動
Windowsのスクリーンセーバーを立ち上げます。スクリーンセーバーが設定されてなければ何も起こりません。
; SC_SCREENSAVE sendmsg hwnd, $112, $F140
□ ディスプレイの省電力表示
モニタを省電力モードに切り替えます。省電力モードが可能なディバイス(ディスプレイ)でないと機能しないなど、環境によって挙動が違うはずなので注意。
; SC_MONITORPOWER sendmsg hwnd, $112, $F170, 1 ; ディスプレイの電源オフ (省電力モードに移行するものもあり) // sendmsg hwnd, $112, $F170, 2 ; 省電力モード&電源オフから復帰 // sendmsg hwnd, $112, $F170, -1