;画面の真中にウィンドウを表示する
#define win_x 640	;ウィンドウの幅
#define win_y 480	;ウィンドウの高さ
	screen 0,win_x,win_y,0,dispx-win_x/2,dispy-win_y/2
	stop
ここで、大切なのはdispx,dispy。この二つのシステム変数です。
これは、ディスプレイの解像度が入っています。あとは、計算をするだけ・・・
(解像度−ウィンドウサイズ)/2で、座標が決まります(ちょっと考えてみてね)。
HSPでは、四則演算の順番が関係ないので、かっこはつけていません(つけておいたほうがいいかも)。

;フルスクリーン表示
;	chgdisp 1		;ディスプレイの解像度を変える。
	bgscr 2,dispx,dispy,0
	stop
ディスプレイの解像度は使う人によって違うため、少し考えなくてはいけません。
システム変数を参照して、フルスクリーンを作成しましょう。
また、chgdispをつかって、強制的に解像度を640×480にしてしまうと 画像の大きさなどもそろえやすいでしょう。
注意として、スクリーンは2番以降のIDを使用すること。
chgdispをbgscrよりも先に行うということです。

;ウィンドウを消す
;	screen 0,640,480	;ウィンドウを作る
	gsel 0,-1
	wait 100
	gsel 0,1
	stop
HSPでは、0番のウィンドウは勝手にできてしまいます。ここで、じゃまになったときには 消してしまいましょう。で、必要になったら、表示すればいいのです。もちろん0番以外の ウィンドウを作成した場合は、その番号を指定すれば同様のことができます。

;枠なしウィンドウを動かす
	gsel 0,-1
	bgscr 2,640,480,0,0,0
	repeat
		stick first_click,,1	;クリックした瞬間
		if first_click&256 {
			mx=mousex : my=mousey
			click=1
		}
		if first_click&512 : break	;右クリックで終了

		getkey now_click,1	;クリックされていれば
		if now_click==1 {
			ginfo 0
			width ,,prmx-mx,prmy-my

		} else {
			wait 1
		}
	loop
	end
少し長いプログラムです。クリックしたマウスの位置(mousex)は、ディスプレイ上のマウス座標と ウィンドウの左上座標の差、つまり、距離に等しいと言うことに注目します。 クリックした瞬間に、左上とマウスの距離をmxにいれます。あとは、マウスが押されていれば、 ディスプレイ上のマウス座標を取得(ginfo 0)して、mxを用いてウィンドウの左上の座標を求めます。

;常に最前に表示
	gsel 0,2
	button "普通に戻す",*natural
	stop
*natural
	gsel 0,1
	stop
HELPを読めば書いてあるのですが(^^;もちろん、ほかのウィンドウIDに対しても可能です。 元に戻すときは、p2を1にすれば、元に戻ります。

;ウィンドウを動かしてみる
#define WIN_W 640
#define WIN_H 480
	screen 0,WIN_W,WIN_H,0,-WIN_W,-WIN_H
	repeat 20,-19
		width ,,cnt*32,cnt*24
	loop
	stop
widthのp3,p4が移動するための座標指定です。p1,p2は省略してもかまいません。 ここでは、最初のウィンドウの位置も決めています(画面の外ですけど(^^;)。

;ウィンドウを小さくしていく
#define WIN_W 640
#define WIN_H 480
	screen 0,WIN_W,WIN_H,0
	repeat 20
		width WIN_W-(cnt*32),WIN_H-(cnt*24)
	loop
	stop
widthのp1,p2がウィンドウのサイズ指定です。最後のstopを消すとウィンドウが消滅 したように見えます。

;ウィンドウを並べる
	bgscr 2,100,200,0
	repeat
		gsel 0
		ginfo 3 : x=prmx	;第二ウインドウのX座標取得
		ginfo 2 : y=prmy	;第二ウインドウのY座標取得
		gsel 2 : width ,,x,y
		wait 1
	loop
	stop
ginfo 3で、基準となるウィンドウの右下座標、ginfo 2で左上座標を取得して 第二ウィンドウの座標を決めます。


■ 目次へ戻る ■

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!