〜 ウィンドウ 〜
フルスクリーンで表示

ウィンドウの基本操作の1つ、HSPウィンドウでディスプレイ全体を覆う方法の紹介です。
通常のウィンドウだとタイトルバーやウィンドウ枠が表示されるため、
確かにウィンドウで全画面表示することができますが不恰好ですし、
何より、ウィンドウ内の表示エリアはディスプレイサイズ未満になってしまいます。
そこで、screen命令ではなく、bgscr命令でウィンドウを作成しましょう。
補足ですが、HSP3からはいずれのウィンドウIDでもbgscr命令により
タイトルバーやウィンドウ枠のないウィンドウとすることができますが、
HSP2.61以下だとウィンドウID0はサイズを変えられるものの、
固定されているためにbgscr命令やbuffer命令でウィンドウスタイルを変更できません。
また、ウィンドウID1は一応は使うことができるものの、
「フルスクリーンモード」時に背景として使用されるウィンドウになるので、推奨されません。
それ以外の問題ないIDでウィンドウを作成し、gsel命令で最前面オプションを併用することで
デフォルトでディスプレイ下部に表示されるタスクバーよりも前面となり、
事実、ディスプレイ全体を覆うことができます。
さて、自分のパソコンで全画面表示されても、他人に使ってもらう場合、
ウィンドウサイズを「1024×768」や「800×600」等と固定値で指定すると、
利用される環境によってディスプレイ全体が埋まってない場合や、
逆にディスプレイサイズよりもウィンドウサイズのほうが大きくて画面外に書かれているものが見えない
なんて問題が起こり得ますので、ディスプレイサイズを指し示しているシステム変数から取得してください。
当然、ウィンドウサイズだけでなく、表示内容の位置・サイズも考慮する必要があります。
ウィンドウはピッタリでも、内容がはみ出していればコレもまた大問題ですからね。
…とまぁ気をつけなければならず、何かと面倒なことがたくさんあるわけですが、
chgdisp命令でディスプレイの解像度を統一してしまうことで大半の問題が片付きます。
コレにおける問題点は、指定した解像度に変更できない環境ではうまく動かないということですが、
HSP2では「640×480」だけしか変更できませんから、
現在正常に使えているPC(ウィンドウズ95以上?)だと問題ないことでしょう。
HSP3だと「640×480」以外の解像度を自分で指定することができますが、
HSP2同様の「640×480」にしておきましょう。
もし、情報量が多くてコレ以上のサイズにする必要性があるのなら、
必要スペックとして「解像度○○以上」等と注意書きをしておきましょう。
	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
	bgscr 2, dispx, dispy, , 0, 0                              // ディスプレイサイズで作成する
	gsel 0, -1 : gsel 2, 2                                     // 最前面に表示する
	color 255, 255, 200 : boxf : color , , 50
	pos 10,  10 : mes "1.終了は「ALT+F4」"
	pos 10,  40 : mes "2.約3秒後に解像度変更例に移ります"
	wait 300
	width 640, 480
	chgdisp 1                                                  // 解像度を強制的に変更する
	pos 10,  70 : mes "3.約3秒後に解像度を元に戻します"
	wait 300
	chgdisp 0                                                  // 元のサイズに戻す
	pos 10, 100 : mes "4.全画面表示の基本を覚えて起きましょう"
	pos 10, 130 : mes "5.約3秒後に終了します"
	wait 300
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
	bgscr 0, ginfo_dispx, ginfo_dispy, , 0, 0                  // ディスプレイサイズで作成する
	gsel 0, 2                                                  // 最前面に表示する
	color 255, 255, 200 : boxf : color , , 50
	pos 10,  10 : mes "1.終了は「ALT+F4」"
	pos 10,  40 : mes "2.約3秒後に解像度変更例に移ります"
	wait 300
	width 640, 480
	chgdisp 1, 640, 480                                        // 解像度を強制的に変更する
	pos 10,  70 : mes "3.約3秒後に解像度を元に戻します"
	wait 300
	chgdisp                                                    // 元のサイズに戻す
	pos 10, 100 : mes "4.全画面表示の基本を覚えて起きましょう"
	pos 10, 130 : mes "5.約3秒後に終了します"
	wait 300
	end