ユーザー定義のデータ型変数を使用する

C 関数 GetWindowRect は、構造化された型を使用して、指定されたウィンドウの画面座標を (ピクセル単位で) 取得します。Type ステートメントを使用して構造体を定義する必要があります。GetWindowRect には戻り値がないので、これをサブルーチンとして宣言できます。ウィンドウハンドルを値渡しで渡し、ユーザー定義のデータ型を参照渡しで渡すことができます。ウィンドウハンドルは (ウィンドウを識別する) 入力パラメータで、ユーザー定義のデータ型変数 Rect は出力パラメータです (GetWindowRect がその値を設定します)。

次の一連の宣言には、MoveWindow も含まれています。MoveWindow を使用して、ウィンドウの移動やサイズ変更ができます。次の例では、データ型の接尾辞文字を使用して、Declare ステートメントのスペースを節約します。

Declare Function GetActiveWindow Lib "User32" () As Long
Type Rect
	left As Long
	top As Long
	right As Long
	bottom As Long
End Type
Declare Sub GetWindowRect Lib "User32" (Byval hWnd As Long, _
lpRect As Rect)
Declare Sub MoveWindow Lib "User32" _
(Byval hWnd As Long, Byval x As Long, Byval y As Long, _
Byval nWidth As Long, nHeight As Long, Byval bRepaint As Long)

Sub Initialize
	Dim activeWin As Long, winRect As Rect
	activeWin = GetActiveWindow
	Call GetWindowRect(activeWin, winRect)
	Call MoveWindow(activeWin, winRect.left, winRect.top, _
	winRect.right/2, winRect.bottom/2, True)
End Sub