'構造体の定義
Private Type POINT
x1 As Long
y1 As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'*****マウスカーソルの現在の位置を、スクリーン座標で取得する*****
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINT) As Long
'*****スクリーン座標をクライアント座標に変換*****
Private Declare Function ScreenToClient Lib "user32" _
(ByVal hWnd As Long, lpPoint As POINT) As Long
'---------------------引数---------------------------
'(hWnd) このハンドルのクライアント座標に変換
'--------------------戻り値--------------------------
'関数が成功すると0以外の値が返り
'関数が失敗すると0が返る
'*****指定されたウインドウにマウスをキャプチャする*****
Private Declare Function SetCapture Lib "user32" _
(ByVal hWnd As Long) As Long
'---------------------引数---------------------------
'(hWnd) マウスをキャプチャするウィンドウハンドル
'--------------------戻り値--------------------------
'その前にキャプチャされていたウィンドウのハンドル返す
'そういったウインドウがなければ0を返す
'*****キャプチャを解放する*****
Private Declare Function ReleaseCapture Lib "user32" () _
As Long
'--------------------戻り値--------------------------
'関数が成功すると0 以外の値が返り
'関数が失敗すると0が返る
'*****指定されたウインドウの位置とサイズを変更する*****
Private Declare Function MoveWindow Lib "user32" (ByVal hWnd _
As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
'---------------------引数---------------------------
'(hWnd) 指定するウインドウのハンドル
'(x)ウィンドウの左上隅の新しい x 座標
'(y)ウィンドウの左上隅の新しい y 座標
'(nWidth)ウィンドウの新しい幅
'(nHeight)ウィンドウの新しい高さ
'(bRepaint)再描画するかどうか
'--------------------戻り値--------------------------
'関数が成功すると0 以外の値が返り
'関数が失敗すると0が返る
'---------------------注意---------------------------
'指定されたウインドウが親ウインドプの場合、位置とサイズを
'スクリーン座標で指定し、子ウィンドウの場合は、クライアン
'ト座標で指定する
'*****指定ウインドウの左上隅と右下隅座標のクライアント座標を得る
Private Declare Function GetClientRect Lib "user32" _
(ByVal hWnd As Long, lpRect As RECT) As Long
'---------------------引数---------------------------
'(hwnd) クライアント座標を取得するウインドウのハンドル
'(lpRect) 座標を格納する構造体
'--------------------戻り値--------------------------
'関数が成功すると0以外の値が返り
'関数が失敗すると0が返る
'*****指定ウインドウの左上隅と右下隅座標のスクリーン座標を得る
Private Declare Function GetWindowRect Lib "user32" (ByVal _
hWnd As Long, lpRect As RECT) As Long
'---------------------引数---------------------------
'(hwnd) スクリーン座標を取得するウインドウのハンドル
'(lpRect) 座標を格納する構造体
'--------------------戻り値--------------------------
'関数が成功すると0以外の値が返り
'関数が失敗すると0が返る
'*****指定されたクライアント座標を含む子ウインドウのハンドルを返す
Private Declare Function ChildWindowFromPoint Lib "user32" _
(ByVal hWnd As Long, ByVal xPoint As Long, _
ByVal yPoint As Long) As Long
'---------------------引数---------------------------
'(hWnd) 親ウインドウのハンドル
'(xPoint) 子ウインドウの x 座標
'(yPoint) 子ウインドウの y 座標
'--------------------戻り値--------------------------
'指定された座標に子ウインドウが存在していればその
'ウインドウのハンドルを返し、指定された座標が親ウィンドウ
'の内部であれば、そのハンドルを返す
'指定された座標が親ウィンドウの外であれば、0を返す
'マウス位置
Dim p As POINT
'移動対象ウインドウのウインドウ座標
Dim rec As RECT
'移動対象ウインドウの左上隅座標保管
Dim lt As POINT
'マウスがダウンされた座標
Dim sx As Long, sy As Long
'移動対象ウインドウのハンドル
Dim ContWnd As Long
'マウスがダウンされているか
Dim mDown As Boolean
|