<Return[D]><Top>

DeferWindowPos

Declare Function Api_DeferWindowPos& Lib "user32" Alias "DeferWindowPos" (ByVal hWinPosInfo&, ByVal hWnd&, ByVal hWndInsertAfter&, ByVal x&, ByVal y&, ByVal cx&, ByVal cy&, ByVal wFlags&)

Declare Function DeferWindowPos Lib "user32" (ByVal hWinPosInfo As Long, ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

指定されたウィンドウ用の指定された複数ウィンドウ位置構造体( 複数のウィンドウ位置を格納できる構造体)を更新し、更新した構造体のハンドルを返す。EndDeferWindowPos 関数を使うと、複数ウィンドウ位置構造体に格納されている情報に従って複数のウィンドウの位置とサイズを一斉に変更できる。複数ウィンドウ位置構造体を作成するには、BeginDeferWindowPos 関数を使用する。

パラメータ
hWinPosInfo
    1 つまたは複数のウィンドウのサイズ情報および位置情報が入った複数ウィンドウ位置構造体のハンドルを指定する。

    このハンドルは、BeginDeferWindowPos 関数または直前に呼び出した DeferWindowPos 関数の戻り値。
hWnd
    移動するウィンドウのハンドルを指定する。このウィンドウの更新情報が、複数ウィンドウ位置構造体に格納される。

    複数ウィンドウ位置構造体に格納するウィンドウはすべて同じ親を持っていなければならない。
hWndInsertAfter
    ウィンドウの Z オーダーでの挿入場所を指定する。ウィンドウのハンドルを指定した場合、hWnd パラメータで指定したウィンドウは、

    このパラメータに指定したウィンドウの後ろに挿入される。次のいずれかの値を指定することもできる。

    値                               

意味                                                                                                                                           

    HWND_BOTTOM

ウィンドウを Z オーダーの最後に置く。hWnd パラメータで指定したウィンドウが最前面ウィンドウだった場合、

 

そのウィンドウは最前面ウィンドウではなくなり、他のすべてのウィンドウの下に置かれる。

    HWND_NOTOPMOST

ウィンドウを最前面ウィンドウ以外のすべてのウィンドウの前( つまり、すべての最前面ウィンドウの後ろ)に挿入

 

する。hWnd パラメータで指定したウィンドウが既に最前面ウィンドウではなかった場合、このフラグは意味を持たな

 

い。

    HWND_TOP

ウィンドウを Z オーダーの先頭に置く。

    HWND_TOPMOST

ウィンドウを最前面ウィンドウではないすべてのウィンドウの前に挿入する。このウィンドウは、アクティブでないときに

 

も最前面に表示される。

    uFlags パラメータで SWP_NOZORDER フラグがセットされている場合は、このパラメータは無視される。
x
    ウィンドウの左上端の x 座標を指定する。
y
    ウィンドウの左上端の y 座標を指定する。
cx
    ウィンドウの新しい幅をピクセル単位で指定する。
cy
    ウィンドウの新しい高さをピクセル単位で指定する。
uFlags
    ウィンドウのサイズおよび位置に関するフラグを指定する。次の値を組み合わせて指定できる。

    値                                       

意味                                                                                                             

    SWP_DRAWFRAME

ウィンドウを囲む枠( ウィンドウクラスの記述部分で定義されている)を描画する。

    SWP_FRAMECHANGED

ウィンドウサイズが変更されない場合にも、ウィンドウに WM_NCCALCSIZE メッセージを送る。

 

このフラグを指定しなかった場合、ウィンドウサイズが変更される場合にしか WM_NCCALCSIZE

 

メッセージは送られない。

    SWP_HIDEWINDOW

ウィンドウを非表示にする。

    SWP_NOACTIVATE

ウィンドウをアクティブ化しない。このフラグを指定しなかった場合、ウィンドウはアクティブ化され、最前面ウィ

 

ンドウまたは非最前面ウィンドウのどちらか(hWndInsertAfter パラメータの設定による)のグループの最

 

上位に移動する。

    SWP_NOCOPYBITS

クライアント領域の内容全体を破棄する。このフラグを指定しなかった場合は、クライアント領域の有効な内

 

容が保存され、再配置後のウィンドウのクライアント領域にコピーし直される。

    SWP_NOMOVE

現在の位置を維持する(x パラメータと y パラメータを無視する)。

    SWP_NOOWNERZORDER

オーナーウィンドウの Z オーダーを変更しない。

    SWP_NOREDRAW

変更を再描画しない。このフラグを指定すると、再描画は一切行われない。

 

このフラグは、クライアント領域、非クライアント領域( タイトルバーおよびスクロールバーを含む)、および

 

親ウィンドウの、このウィンドウが移動した結果現れた部分のすべてに適用される。

 

このフラグを指定した場合、ウィンドウや親ウィンドウの再描画の必要な部分は、アプリケーションで明示的に

 

無効化または再描画しなければならない。

    SWP_NOREPOSITION

SWP_NOOWNERZORDER フラグと同じ。

    SWP_NOSENDCHANGING

ウィンドウに WM_WINDOWPOSCHANGING メッセージが送られないようにする。

    SWP_NOSIZE

現在のサイズを維持する(cx パラメータと cy パラメータを無視する)。

    SWP_NOZORDER

現在の Z オーダーを維持する(hWndInsertAfter パラメータを無視する)。

    SWP_SHOWWINDOW

ウィンドウを表示する。


戻り値
    関数が成功すると、更新された複数ウィンドウ位置構造体のハンドルが返る。

    このハンドルは、関数に渡したハンドルとは異なる場合がる。

    次に DeferWindowPos 関数または EndDeferWindowPos 関数を呼び出すときには、この関数から返された新しいハンドルを指定する。
    システムリソース不足のため関数が失敗したときは、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。