HSP命令講座 <ginfo関数>

Last Update : 2009/04/xx

PR HSPの書籍 『最新HSP3.2 プログラミング入門』

ginfo関数 [HSP3]

 様々なウィンドウ関連情報を取得する関数です。関数名の由来は「general information」。

 HSP2では命令形式で提供されていましたが、HSP3では関数として記述法が変わってます。また、HSP2ではシステム変数から得られたものも加わって取得できる情報の数が増えてます。

 ginfo (取得タイプ)

 第1パラメータに取得するタイプを指定します。

 この取得タイプは、マクロとしてcommonフォルダ内の「hspdef.as」ファイル内でシステム変数として定義されてます。スクリプトのコンパイルの際にginfo関数へと置き換えられます。

↑TOP↑

取得タイプ 0・1 : マウスカーソルの位置

 マウスカーソル(ポインタ)の表示位置をXY座標で取得します。基点はモニタ画面全体の左上になります。マクロ定義のシステム変数としてginfo_mxとginfo_myが割り当てられてます。

	repeat
		title ""+ginfo(0)+" x "+ginfo(1)

		wait 10
	loop

 ちなみに、HSPの自ウィンドウ内でのカーソル位置を取得したい場合はステム変数のmousexとmouseyを利用します。mouse命令を使えばカーソル表示位置を変更、カーソルの非表示ができます。

↑TOP↑

取得タイプ 2 : アクティブなウィンドウID

 現在アクティブになってるウィンドウID値を取得します。アクティブなウィンドウIDはscreen命令、bgscr命令で指定するウィンドウの番号で、HSPが用意したウィンドウ以外の場合は-1が返ります。マクロ定義のシステム変数としてginfo_actが割り当てられてます。

	screen 1, 200, 200
	screen 2, 200, 200
	screen 3, 200, 200
	bgscr 4, 200, 200

	gsel 0

	repeat
		title "ウィンドウID : "+ginfo(2)

		wait 10
	loop

 ちなみに、スクリプトからHSPのウィンドウをアクティブ化するには、gsel命令(スイッチオプションの1、2)を利用します。

↑TOP↑

取得タイプ 3 : 操作先のウィンドウID

 現在操作対象先となってるウィンドウID値を取得します。操作先のウィンドウIDはscreen命令、bgscr命令、buffer命令で指定するウィンドウやバッファ画面の番号です。マクロ定義のシステム変数としてginfo_selが割り当てられてます。

 ウィンドウやバッファ画面の操作先はgsel命令で変更できます。

↑TOP↑

取得タイプ 4・5・6・7 : ウィンドウの表示位置

 ウィンドウの表示位置を左上XY座標、右下XY座標で取得します。基点はモニタ画面全体の左上になります。対象はscreen命令かbgscr命令で用意したウィンドウです。マクロ定義のシステム変数としてginfo_wx1とginfo_wy1、ginfo_wx2とginfo_wy2が割り当てられてます。

 このサンプルコードでは、タイトルバーやウィンドウ枠をドラッグ中にプログラムの処理が一時停止するため、リアルタイムで位置表示が変動しません。

	repeat
		title "左上 "+ginfo(4)+" x "+ginfo(5)+" / 右下 "+ginfo(6)+" x "+ginfo(7)

		wait 10
	loop
//	サイズ可変が可能なウィンドウID1以降

	screen 1

	repeat
		gsel 1
		wx1 = ginfo(4) : wy1 = ginfo(5)
		wx2 = ginfo(6) : wy2 = ginfo(7)

		gsel 0
		title "左上 "+wx1+" x "+wy1+" / 右下 "+wx2+" x "+wy2

		wait 10
	loop

 ちなみに、ウィンドウの表示位置や表示サイズをスクリプト上から変更するにはwidth命令を利用します。

↑TOP↑

取得タイプ 8・9 : ウィンドウのスクロール位置

 (準備中)

↑TOP↑

取得タイプ 10・11 : ウィンドウの表示サイズ

 ウィンドウの表示サイズを取得します。タイトルバーやウィンドウ枠の部分が含まれるため、PC環境(OSの種類、ビジュアルスタイルの有無、GUIフォントのサイズ)によっては数値が異なります。ウィンドウの左上部分から右下部分のサイズになるので、取得タイプ4〜7から得られた数値を減算すれば結果が同じです。

	mes ""+ginfo(10)+" x "+ginfo(11)

	mes ""+(ginfo(6) - ginfo(4))+" x "+(ginfo(7) - ginfo(5))

↑TOP↑

取得タイプ 12・13 : ウィンドウ内の描画部分のサイズ

 ウィンドウ内の描画部分のサイズを取得します。これはクライアント領域(クライアントエリア)と呼ばれる部分で、HSPで図形や文字を描画したり、オブジェクトの設置ができる白色(デフォルト)の領域です。

 screen命令の場合はタイトルバーやウィンドウ枠が含まず、タイトルバーの真下の左上部分が基点です。bgscr命令の場合は取得タイプ4〜7から得られた数値を減算すれば結果が同じです。仮想画面のbuffer命令も取得できます。

 デフォルトのサイズはscreen命令、bgscr命令、buffer命令でPC環境関係なく640x480の固定サイズです。

↑TOP↑

取得タイプ 14・15 : 文字列の描画サイズ

 mes命令(print命令)を利用した文字描画の出力サイズ(右下部分)がドット単位で返ります。基点はそれぞれの先頭文字描画の左上部分です。マクロ定義のシステム変数としてginfo_mesxとginfo_mesyが割り当てられてます。

 表示された位置座標でないことに注意してください。文字の長さをバイトサイズで取得するstrlen関数とは異なり、実際に目に見える描画のサイズです。

 これをうまく利用すれば、通常はmes命令を呼ぶたびに改行表示されるところを、pos命令の位置指定で後方に反映させることができます。(mes命令color命令の講座ページに実例あり)

	mes "HSPプログラミング"
	outy += ginfo(15)

	mes "をはじめちゃお!"
	outy += ginfo(15)

	color $FF

	mes "Windowsプログラム"

	color , $FF

	pos ginfo(14), outy
	mes "を作っちゃお!"

↑TOP↑

取得タイプ 16・17・18 : 指定描画カラーのRGB値

 現在設定されてる配色のRGB値をそれぞれ取得します。RGB値は赤のR(Red)、青のB(Blue)、緑のG(Green)からなる光の三原色で、文字や図形の描画で反映されます。マクロ定義のシステム変数としてginfo_rとginfo_gとginfo_bが割り当てられてます。

 色指定命令のcolor命令やhsvcolor命令やsyscolor命令で変動します。また、dialog命令の配色カラー選択ダイアログや、HSPウィンドウ内の1ドットの点の色を取得するpget命令での結果取得としても利用します。

↑TOP↑

取得タイプ 19 : ウィンドウのカラーモード

 (準備中)マクロ定義のシステム変数としてginfo_paluseが割り当てられてます。

↑TOP↑

取得タイプ 20・21 : ディスクトップ全体の画面解像度

 ディスクトップ(モニタ)の画面全体のサイズ、いわゆる画面の解像度のピクセルサイズを取得します。マクロ定義のシステム変数としてginfo_dispxとginfo_dispyが割り当てられてます。

	mes ""+ginfo(20)+" x "+ginfo(21)+" ピクセル

↑TOP↑

取得タイプ 22・23 : カレントポジションの座標位置

 ウィンドウの描画部分(クライアントエリア)で、現在指定されてる位置(カレントポジション)を取得します。基点はHSPが描画できる白色(デフォルト)の左上部分です。pos命令でカレントポジションを指定できます。マクロ定義のシステム変数としてginfo_cxとginfo_cyが割り当てられてます。

 mes命令(print命令)で文字描画や、オブジェクトの設置やobjsize命令によるサイズ指定により、自動的にカレントポジションが真下(Y方向)へ変動します。

	color , $FF

	pos 100, 100
	mes "HSPプログラミング"

	color $FF

	pos ginfo(22) + ginfo(14), ginfo(23) - ginfo(15)
	mes "をはじめちゃお!"

↑TOP↑

取得タイプ 24 : メッセージ割り込みのウィンドウID

 ウィンドウメッセージの割り込みが行われた時のラベルジャンプ先を指定するoncmd命令で、割り込みが行われたウィンドウIDの番号が返ります。ウィンドウメッセージはWin32プログラミングの領域で、基本的にHSPにはない概念です。マクロ定義のシステム変数としてginfo_initidが割り当てられてます。

↑TOP↑

取得タイプ 25 : 未使用ウィンドウIDの取得 (HSP 3.2〜)

 HSP 3.0、HSP 3.1にタイプ25のモードは存在しません。HSPエラー21「サポートされない機能を選択しました」が表示されます。

 HSP 3.2以降では、screen命令やbgscr命令やbuffer命令で一度も呼ばれていないウィンドウID(1〜)が返ります。マクロ定義のシステム変数としてginfo_newidが割り当てられてます。

↑TOP↑

取得タイプ 26・27 : ウィンドウの描画部分の初期サイズ

 ウィンドウの描画部分(クライアントエリア)の初期設定値を取得します。基本的に取得タイプ 12・13と同じもので、screen命令やbgscr命令やbuffer命令を呼び出した段階での数値になります。width命令による変更は反映されません。マクロ定義のシステム変数としてginfo_sxとginfo_syが割り当てられてます。

↑TOP↑

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

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