〜 ウィンドウ 〜
ウィンドウの外枠サイズ・タイトルバーの高さを取得1

昔から使えるginfo命令(HSP3からはginfo関数)だけを利用して、
ウィンドウの枠線太さやタイトルバーの高さを算出する古典的なサンプルを載せておきます。
尚、WinAPIで取得する方法についてはコチラをご覧ください。
今回紹介するginfo命令(HSP3からはginfo関数)も内部的にはそのAPIから取得していると思いますが、
直接的に取得するか、間接的に取得するかの違い位でいずれも同じ結果を返します。
	

getwakusize
[パラメータなし]ウィンドウの枠幅を取得するだけの為、パラメータは必要ない。
尚、取得した枠幅はstatに格納される。

getcaptionsize
[パラメータなし]タイトルバーの高さを取得するだけの為、パラメータは必要ない。
尚、取得したサイズはstatに格納される。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#module
#deffunc getwakusize
	mref stt, 64
	ginfo 5
	stt = prmx - winx / 2
	return

#deffunc getcaptionsize
	mref stt, 64
	getwakusize
	stt = prmy - winy - (stat * 2)
	return
#global

	screen 0, 400, 300, , 100, 50
	title "サイズ不変ウィンドウ"
	getwakusize    : mes "枠幅は" + stat + "です"
	getcaptionsize : mes "タイトルバーの高さは" + stat + "です"
	getwakusize
	screen 2, 400, 300, 8, winx + stat + 100, 50
	title "サイズ可変ウィンドウ"
	getwakusize    : mes "枠幅は" + stat + "です"
	getcaptionsize : mes "タイトルバーの高さは" + stat + "です"
	stop

枠幅 = getwakusize( )
枠幅取得したウィンドウ枠幅の受取先を指定する。
[パラメータなし]ウィンドウの枠幅を取得するだけの為、パラメータは必要ない。

高さ = getcaptionsize( )
高さ取得したタイトルバー高さの受取先を指定する。
[パラメータなし]タイトルバーの高さを取得するだけの為、パラメータは必要ない。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#define ctype getwakusize ((ginfo(6) - ginfo(4) - ginfo(12)) / 2)
#define ctype getcaptionsize (ginfo(7) - ginfo(5) - ginfo(13) - getwakusize() * 2)

	screen 0, 400, 300, , 100, 50
	title "サイズ不変ウィンドウ"
	mes "枠幅は" + getwakusize() + "です"
	mes "タイトルバーの高さは" + getcaptionsize() + "です"
	screen 2, 400, 300, 8, ginfo_winx + getwakusize() + 100, 50
	title "サイズ可変ウィンドウ"
	mes "枠幅は" + getwakusize() + "です"
	mes "タイトルバーの高さは" + getcaptionsize() + "です"