Win32APIを利用すると,ウィンドウの位置や大きさを好みに合わせて変更できる。
例
100 CALL GetWindowRect(WINHANDLE("MAIN"),left,top,right,bottom) 110 PRINT left,top,right,bottom 120 CALL GetWindowRect(WINHANDLE("TEXT"),leftT,topT,rightT,bottomT) 130 CALL SetWindowPos(WinHandle("TEXT"),0,right,top,rightT-LeftT,Bottom-Top,0) 140 END 150 EXTERNAL SUB GetWindowRect(handle,left,top,right,bottom) 160 OPTION CHARACTER byte 170 FUNCTION GetWindowRectOrg(hwnd,p$) 180 ASSIGN "user32.dll","GetWindowRect" 190 END FUNCTION 200 LET p$=REPEAT$(CHR$(0),16) 210 IF GetWindowRectOrg(Handle,p$)<>0 THEN 220 LET left=ORD(p$(1:1))+256*ORD(p$(2:2)) 230 LET top=ORD(p$(5:5))+256*ORD(p$(6:6)) 240 LET right=ORD(p$(9:9))+256*ORD(p$(10:10)) 250 LET bottom=ORD(p$(13:13))+256*ORD(p$(14:14)) 260 END IF 270 END SUB 280 EXTERNAL SUB SetWindowPos(hwnd,HwndInsAfter,x,y,cx,cy,nFlags) 290 ASSIGN "user32.dll","SetWindowPos" 300 END SUB
150行で定義された外部副プログラムGetWindowRectは,指定したウィンドウの四隅の座標を取得する。
280行の関数SetWindowPosは,nFlagsに0を指定したとき,指定されたウィンドウの左上端をx,yに移動し,幅をcxに,高さをcyに変更する。
HwndInsAfterは通常,0を指定する。
上のプログラムを実行すると,テキストウィンドウがメインウィンドウの右に密着して並ぶ。
SetWindowPosは,nFlagsに1を指定するとx,yのみが有効で幅,高さは保存され,nFlagsに2を指定するとcx,cyのみが有効で幅,高さのみが変わる。
ウィンドウの表示状態の変更はShowWndで変更できる。
例 グラフィックスウィンドウとテキストウィンドウのアイコンの表示を消す
10 SUB ShowWnd(hWnd, nCmdShow) 20 ASSIGN "user32.dll","ShowWindow" 30 END SUB 40 CALL showWnd(winhandle("GRAPHICS"),0) 50 CALL showWnd(winhandle("TEXT"),0) 60 END
表示状態に戻すときは,第2引数に5を指定する。詳細はこちら。
WINHANDLE関数の引数は,次のいずれか。
"MAIN","TEXT","GRAPHICS","INPUT","CHARACTER INPUT","TRACE", "LOCATE", "TEXTWINDOW1", "TEXTWINDOW2" (各ウィンドウに対応)
"RICHEDIT", "RICHEDIT1", "RICHEDIT2"(それぞれ,テキストウインドウ,TextWindow1,TextWindow2のRichEditコントロール。)