HSP命令講座 <width命令>

Last Update : 2008/05/xx

PR HSPの書籍 『逆引き HSP3プログラミング事典 基本編』

width命令

 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を指定すると表示位置がモニター画面の左上隅となります。マイナス値の場合はウィンドウは規定の表示位置から変わりません。

↑TOP↑

サンプルコード (ウィンドウの表示サイズ変更)

 ウィンドウの表示サイズを変更するサンプルスクリプトコードです。

	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 "拡大可能"

↑TOP↑

サンプルコード (ウィンドウの表示位置変更)

 ウィンドウの表示位置を変更するサンプルスクリプトです。

 ウィンドウがブルブルッと震えます。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 "止まった!"

↑TOP↑

その他

 通常は有効になってないウィンドウの最大化ボタンを有効にするには、Win32 API関数でウィンドウスタイルを変更する必要があります。マウスによるウィンドウ枠のドラッグ変更で、ウィンドウを自由にサイズ可変できるようにする場合も同様です。(→ HSP3あれこれ ウィンドウ編

 ウィンドウをタイトルバー上に入れる(最小化する)には、sendmsg命令を利用して簡単に実現できます。(→ sendmsg命令チップ集 ウィンドウ編

 ボタンやリストボックスなどのGUIオブジェクトの表示サイズを指定するにはobjsize命令です。また、オブジェクトを設置後に表示位置や表示サイズを変更するには、Win32 API関数利用する必要があり、HSP3にはモジュール命令も用意されてます。(→ HSP3あれこれ オブジェクト編

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.