ウィンドウサイズとクライアントサイズ <TOP>
ウィンドウ(フォーム)サイズとクライアントサイズ(フレーム・タイトルの高さなどを差し引いた領域)の設定
AdjustWindowRectEx クライアントサイズぴったりの大きさのウィンドウを作成
GetClientRect ウィンドウのクライアント領域の座標を取得
GetWindowLong 指定されたウィンドウに関しての情報を取得
左:WindowsXP 右:Windows2000(ウィンドウサイズが同じでもクライアント領域はこのように異なる)
'================================================================ '= ウィンドウサイズとクライアントサイズ
'= (AdjustWindowRectEx.Ex)
'================================================================ #include "Windows.bi" Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' クライアントサイズぴったりの大きさのウィンドウを作成 Declare Function Api_AdjustWindowRectEx& Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle&, ByVal bMenu&, ByVal dwEsStyle&) ' ウィンドウのクライアント領域の座標を取得 Declare Function Api_GetClientRect& Lib "user32" Alias "GetClientRect" (ByVal hWnd&, lpRect As RECT) ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) #define GWL_EXSTYLE (-20) '拡張ウィンドウスタイル #define GWL_STYLE (-16) 'ウインドウスタイルを取得 Var Shared Text1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var mWidth As Long Var mHeight As Long Var rc As RECT Var Ret As Long rc.Left = 0 rc.Top = 0 rc.Right = 232 rc.Bottom = 106 Ret = Api_AdjustWindowRectEx(rc, Api_GetWindowLong(GethWnd, GWL_STYLE), 0, Api_GetWindowLong(GethWnd, GWL_EXSTYLE)) mWidth = rc.Right - rc.Left mHeight = rc.Bottom - rc.Top SetWindowSize mWidth, mHeight End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Resize edecl () Sub MainForm_Resize() Var rc As RECT Var Ret As Long Ret = Api_GetClientRect(GethWnd, rc) Text1.SetWindowText "WindowSize:" & Str$(GetWidth) & " x" & Str$(GetHeight) & Chr$(13, 10) & "ClientRect:" & Str$(rc.Right) & " x" & Str$(rc.Bottom) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End