Last Update : 2008/05/xx
screen命令やbgscr命令で表示するウィンドウの表示サイズの変更と、ウィンドウの表示位置の変更を行う命令です。命令名の由来はそのまま英単語の「width」(意味は「幅」「広さ」、発音は「ウィッズ」)から。
width X方向の表示サイズ, Y方向の表示サイズ, X座標の表示位置, Y座標の表示位置
もし、ウィンドウを変更するにはgsel命令で操作先ウィンドウIDを変更します。ちなみに、この命令はあくまでHSPのウィンドウだけが対象で、別のプログラムのウィンドウは制御はできません。
(1) 第1パラメータ・第2パラメータ
ウィンドウの中のクライアントエリアのサイズ(ドット単位)を変更します。クライアントエリアは、タイトルバーやウィンドウ枠を含まない、デフォルトで白い部分のところです。screen命令の場合、X方向の最小値は100で、それ以下の数値を指定しても小さくなりません。また、Y方向の最小値は基本的に1で、0やマイナス値の場合はサイズが変わりません。bgscr命令の場合は、XY方向とも最小値は1です。
注意したいのは、screen命令やbgscr命令の第2パラメータ、第3パラメータで指定する「初期化する画面サイズ」より大きなサイズ値を指定したとしても反映されません。
(2) 第3パラメータ・第4パラメータ
ウィンドウの表示位置(ドット単位)を変更します。起点はモニター画面の左上になり、それぞれ最小値の0を指定すると表示位置がモニター画面の左上隅となります。マイナス値の場合はウィンドウは規定の表示位置から変わりません。
ウィンドウの表示サイズを変更するサンプルスクリプトコードです。
screen 0 wait 100 width 300, 300 mes "縮小!"
screen命令やbgscr命令の「初期化する画面サイズ」より大きな数値を指定しても反映されません。ウィンドウ画面の最大化を想定するなら、ginfo関数のタイプ20&21のデスクトップ全体のサイズをあらかじめ指定しときます。
// ここでウィンドウサイズが「Max. 100」に規定 screen 0, 100, 100 wait 100 width 300, 300 mes "拡大できない"
screen 0, ginfo(20), ginfo(21) wait 100 width 400, 300 mes "拡大可能"
ウィンドウの表示位置を変更するサンプルスクリプトです。
ウィンドウがブルブルッと震えます。ginfo関数のタイプ4で現在のウィンドウ位置を取得して、テキトーに±範囲で左右に表示位置を移動させて揺らす処理になってます。
mes "ブルブルッ・・・" sindo = 2 repeat wait 10 width , , ginfo(4) ^ sindo stick key ; 左クリックで振動幅アップ if key & 256 : sindo += 2 ; 右クリックでループ抜ける if key & 512 : break loop mes "止まった!"
通常は有効になってないウィンドウの最大化ボタンを有効にするには、Win32 API関数でウィンドウスタイルを変更する必要があります。マウスによるウィンドウ枠のドラッグ変更で、ウィンドウを自由にサイズ可変できるようにする場合も同様です。(→ HSP3あれこれ ウィンドウ編)
ウィンドウをタイトルバー上に入れる(最小化する)には、sendmsg命令を利用して簡単に実現できます。(→ sendmsg命令チップ集 ウィンドウ編)
ボタンやリストボックスなどのGUIオブジェクトの表示サイズを指定するにはobjsize命令です。また、オブジェクトを設置後に表示位置や表示サイズを変更するには、Win32 API関数利用する必要があり、HSP3にはモジュール命令も用意されてます。(→ HSP3あれこれ オブジェクト編)