指定のウィンドウのサイズ、位置、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オーダを設定するためのウィンドウのハンドルx
(hWndは、hWndInsertAfterの前になる)
or Zオーダを指定する定数
新しい位置の左上隅のx座標y
同、y座標cx
同、ウィンドウの幅cy
同、高さuFlags
ウィンドウの位置とサイズを指定する定数の組み合わせ戻り値
正常終了のとき 直前までアクティブだったウィンドウハンドルhWndInsertAfterの定数
エラーのとき 0
uFlagsの定数
HWND_NOTOPMOST = -2 トップ指定されたウィンドウの直後に置く
HWND_TOPMOST = -1 常に手前に表示
HWND_TOP = 0 Zオーダのトップに置く
HWND_BOTTOM = 1 ウィンドウ表示リストの最後に置く
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