クライアント領域の矩形サイズを指定してウィンドウのサイズを取得
Declare Function AdjustWindowRectEx Lib "user32.dll" _
(lpRect as RECT, ByVal dwStyle As Long, ByVal bMenu As Long, _
ByVal dwExStyle As Long) As Long
Declare Function AdjustWindowRectEx Lib "user32.dll" _
(lpRect as RECT, ByVal dwStyle As Integer, _
ByVal bMenu As Integer, ByVal dwExStyle As Integer) As Integer
BOOL AdjustWindowRectEx(
LPRECT lpRect,
DWORD dwStyle,
BOOL bMenu,
DWORD dwExStyle
);
引数
lpRect
関数実行時にクライアント領域のサイズを指定wStyle
(GetClientRect()関数を使って取得)
関数実行後、データを受け取るためのRECT構造体
サイズを計算するために、ウィンドウの通常スタイルを指定bMenu
(GetWindowLong()関数を使って取得)
メニューがあるとき1dwExStyle
サイズを計算するために、ウィンドウの拡張ウィンドウスタイルを指定戻り値
(GetWindowLong()関数を使って取得)
正常終了のとき 0以外備考
エラーのとき 0
ウィンドウのサイズは、クライアント領域と非クライアント領域を含む。サンプル
ただし、メニューバーが複数のときは高さの付加分は含まない。
ダウンロード(AdjustWindowRectEx.lzh 2.33KB)Private Sub Timer1_Timer()
Dim rc As Long
Dim lpRect As RECT, dwStyle As Long, dwExStyle As Long
Dim Temp As String
Dim Pos As PointApi, hWnd As Long
'現在のマウス位置を取得
rc = GetCursorPos(Pos)
'現在のマウス位置にあるウィンドウのハンドル取得
hWnd = WindowFromPoint(Pos.X, Pos.Y)
'ウインドウの通常スタイル
dwStyle = GetWindowLong(hWnd, GWL_STYLE)
'ウインドウの拡張スタイル
dwExStyle = GetWindowLong(hWnd, GWL_EXSTYLE)
'クライアント領域のサイズを得る
rc = GetClientRect(hWnd, lpRect)
'ウィンドウのキャプションを取得する
Temp = String(256, Chr(0))
Call GetWindowText(hWnd, Temp, 256)
a = InStr(Temp, Chr(0))
If a > 1 Then
Temp = Mid(Temp, 1, a - 1)
Else
Temp = ""
End If
With Me.List1
.Clear
.AddItem Temp
.AddItem ""
.AddItem "クライアント領域"
.AddItem " Left :" + Str(lpRect.Left)
.AddItem " Top :" + Str(lpRect.Top)
.AddItem " Right :" + Str(lpRect.Right)
.AddItem " Bottom :" + Str(lpRect.Bottom)
.AddItem ""
End With
'ウィンドウサイズを取得
rc = AdjustWindowRectEx(lpRect, dwStyle, 0, dwExStyle)
With Me.List1
.AddItem "ウィンドウ領域"
.AddItem " Left :" + Str(lpRect.Left)
.AddItem " Top :" + Str(lpRect.Top)
.AddItem " Right :" + Str(lpRect.Right)
.AddItem " Bottom :" + Str(lpRect.Bottom)
End With
End Sub