タスクバーを考慮してウィンドウを中央寄せ

;
;	ウィンドウ中央表示(タスクバー考慮)
;
; タスクバーを考慮してウィンドウを中心寄せで配置します。
; ウィンドウが大きすぎてディスプレイサイズを超える場合は、左上が必ずディスプレイ内に入るよう調整。
;

;-----------------------------
;	タスクバー位置サイズを取得
;-----------------------------
#uselib "user32"
#func FindWindow "FindWindowA" str, int
#func GetWindowRect "GetWindowRect" int, int

dim RECT, 4
FindWindow "shell_traywnd"
GetWindowRect stat, varptr (RECT)


mes rect(0)	;L
mes rect(1)	;T
mes rect(2)	;R
mes rect(3)	;B

tw = rect(2) - rect(0)	;幅
th = rect(3) - rect(1)	;高さ

/*
	タスクバーの位置
	L!0 右
	T!0 下
	R!ginfo_dispx 左
	B!ginfo_dispy 上
*/

;-----------------------------
;	ウィンドウ作成
;-----------------------------
w = 1800+500	;横幅
h = 600	;高さ
screen 0, w, h

;-----------------------------
;	ウィンドウ位置を調整
;-----------------------------
w = ginfo_sizex
h = ginfo_sizey
l = 0
t = 0

;	右
if rect(0)!0 {
	l = (ginfo_dispx - tw - w) / 2
	t = (ginfo_dispy - h) / 2
}

;	下
if rect(1)!0 {
	l = (ginfo_dispx - w) / 2
	t = (ginfo_dispy - th - h) / 2
}

;	左
if rect(2)!ginfo_dispx {
	l = (ginfo_dispx - tw - w) / 2 + tw
	t = (ginfo_dispy - h) / 2 + th
}

;	上
if rect(3)!ginfo_dispy {
	l = (ginfo_dispx - w) / 2
	t = (ginfo_dispy - th - h) / 2 + th
}

if l<0 : l = 0
if t<0 : t = 0
width ,,l,t