|
|
2015/4/18(Sat) 00:22:44|NO.68600
アプリ実行時にサイズが違う2つのウィンドウを表示させるのですが、
その際に表示位置が隣接するように置きたいのです。
どのように書けばいいのかご教示願います。
|
|
2015/4/18(Sat) 00:33:16|NO.68601
どうぞ。
// 1つ目のウィンドウ
screen 0,480,320,0,0,0 : title "window 1": cls 4
x=ginfo_sizex: y=ginfo_sizey
color 255,255,255: mes "横サイズ="+x+" 縦サイズ="+y
// 2つ目以降のウィンドウ
screen 1,256,128,0,x,0 : title "window 2" // 横に並べる
screen 2,256,128,0,0,y : title "window 3" // 縦に並べる
stop
|
|
2015/4/18(Sat) 10:03:41|NO.68604
> ありがとうございます。でも、自環境では少し重なってしまうのですが……
Windows Vista 以降はフレーム枠と見た目の外枠が違いますね。
screen 0,480,320,SCREEN_NORMAL,0,0
title "メイン"
fx=ginfo_sizeX-ginfo_winX
fy=ginfo_sizeY-ginfo_winY
sx=ginfo_sizeX
sy=ginfo_sizeY
screen 1,256,128,SCREEN_NORMAL,sx+fx-1,0
title "横"
screen 2,256,128,SCREEN_NORMAL,0,sy+fx-1
title "縦"
stop
これで期待通りですが、Windows XP などでは隙間が空きます。
Windows Vista 以降の限定なら使えるが。
|
|
2015/4/18(Sat) 11:26:21|NO.68605
#uselib "Dwmapi.dll"
#cfunc DwmGetWindowAttribute "DwmGetWindowAttribute" int, int, var, int
#enum DWMWA_NCRENDERING_ENABLED = 1
#enum DWMWA_NCRENDERING_POLICY
#enum DWMWA_TRANSITIONS_FORCEDISABLED
#enum DWMWA_ALLOW_NCPAINT
#enum DWMWA_CAPTION_BUTTON_BOUNDS
#enum DWMWA_NONCLIENT_RTL_LAYOUT
#enum DWMWA_FORCE_ICONIC_REPRESENTATION
#enum DWMWA_FLIP3D_POLICY
#enum DWMWA_EXTENDED_FRAME_BOUNDS
#enum DWMWA_HAS_ICONIC_BITMAP
#enum DWMWA_DISALLOW_PEEK
#enum DWMWA_EXCLUDED_FROM_PEEK
#enum DWMWA_CLOAK
#enum DWMWA_CLOAKED
#enum DWMWA_FREEZE_REPRESENTATION
#enum DWMWA_LAST
#define S_OK 0
// 1つ目のウィンドウ
screen 0,480,320,0,0,0 : title "window 1": cls 4
// Windows Vista以降か?
if varptr(DwmGetWindowAttribute){
// RECT構造体
dim rect, 4
if S_OK == DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, rect, 16){
x = rect.2 : y = rect.3
}else{
// Aeroが無効
x = ginfo_sizex : y = ginfo_sizey
}
}else{
// XP以前
x = ginfo_sizex : y = ginfo_sizey
}
color 255,255,255: mes "横サイズ="+x+" 縦サイズ="+y
// 2つ目以降のウィンドウ
screen 1,256,128,0,x,0 : title "window 2" // 横に並べる
screen 2,256,128,0,0,y : title "window 3" // 縦に並べる
stop
| |
|
2015/4/28(Tue) 17:02:27|NO.68826
解決しました。
|
|