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