SetWindowPos

機能
指定のウィンドウのサイズ、位置、Zオーダーを設定
Declare Function SetWindowPos Lib "user32.dll"  _
(ByVal hWnd As Long, ByVal hWndInertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal uFlags As Long) As Long
Declare Function SetWindowPos Lib "user32.dll"  _
(ByVal hWnd As Integer, ByVal hWndInertAfter As Integer, _
ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, _
ByVal cy As Integer, ByVal uFlags As Integer) As Integer

BOOL SetWindowPos(
HWND hWnd,
HWND hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
UINT uFlags
);
引数
hWnd

対象のウィンドウのハンドル
hWndInsertAfter
ウィンドウのZオーダを設定するためのウィンドウのハンドル
(hWndは、hWndInsertAfterの前になる)
  or  Zオーダを指定する定数
x
新しい位置の左上隅のx座標
y
同、y座標
cx
同、ウィンドウの幅
cy
同、高さ
uFlags
ウィンドウの位置とサイズを指定する定数の組み合わせ
戻り値
正常終了のとき  直前までアクティブだったウィンドウハンドル
エラーのとき  0
hWndInsertAfterの定数

HWND_NOTOPMOST = -2            トップ指定されたウィンドウの直後に置く
HWND_TOPMOST = -1              常に手前に表示
HWND_TOP = 0                   Zオーダのトップに置く
HWND_BOTTOM = 1                ウィンドウ表示リストの最後に置く
uFlagsの定数
SWP_ASYNCWINDOWPOS = &H4000    この関数を呼び出したスレッドが
                                ウィンドウを持たないとき
                                ウィンドウを持つスレッドにメッセージを送る
SWP_DEFERERASE = &H2000        WM_SYNCPAINTを発生させない
SWP_DRAWFRAME = &H20           再描画時にウィンドウを囲む枠を表示
SWP_FRAMECHANGED = SWP_DRAWFRAME
SWP_HIDEWINDOW = &H80          再描画時にウィンドウを非表示にする
SWP_NOACTIVATE = &H10          ウィンドウをアクティブにしない
                                (通常は自動的にアクティブになる)
SWP_NOCOPYBITS = &H100         クライアント領域のないようをクリアする
SWP_NOMOVE = &H2               サイズだけ変更(CX,CYは無視)
SWP_NOOWNERZORDER = &H200      オーナウィンドウのZオーダは変更しない
SWP_NOREDRAW = &H8             自動的に再描画しない
SWP_NOREPOSITION = SWP_NOOWNERZODER
SWP_NOSENDCHANGING = &H400     WM_WINDOWPOSCHANGINGを送らない
SWP_NOSIZE = &H1               ウィンドウのサイズを変えないで移動のみ
                                (CXとCYを無視)
SWP_NOZODER = &H4              現在のZオーダを維持
SWP_SHOWWINDOW = &H40          再描画時に、ウィンドウを再表示
サンプル
ダウンロード(SetWindowPos.lzh 2.04KB)

Dim Cnt As Long
Private Sub Command1_Click()
Me.Timer1.Enabled = True
End Sub

Private Sub Form_Load() Me.Timer1.Enabled = False End Sub
Private Sub Timer1_Timer() Cnt = Cnt + 1 If Cnt < 20 Then Call SetWindowPos(Me.hWnd, HWND_TOP, Cnt * 10, Cnt * 10, 0, 0, SWP_NOSIZE) Else Call SetWindowPos(Me.hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE) Me.Timer1.Enabled = False Cnt = 0 End If End Sub