指定したウィンドウの指定した複数ウィンドウの位置構造を更新します。 その後、関数は更新された構造体にハンドルを返します。 EndDeferWindowPos 関数は、この構造体の情報を使用して、複数のウィンドウの位置とサイズを同時に変更します。 BeginDeferWindowPos 関数によって構造体が作成されます。
構文
HDWP DeferWindowPos(
[in] HDWP hWinPosInfo,
[in] HWND hWnd,
[in, optional] HWND hWndInsertAfter,
[in] int x,
[in] int y,
[in] int cx,
[in] int cy,
[in] UINT uFlags
);
パラメーター
[in] hWinPosInfo
型: HDWP
複数ウィンドウへのハンドル – 1 つ以上のウィンドウのサイズと位置情報を含む位置構造。 この構造体は、 BeginDeferWindowPos または DeferWindowPos の最新の呼び出しによって返されます。
[in] hWnd
型: HWND
更新情報が構造体に格納されるウィンドウへのハンドル。 複数ウィンドウの位置構造内のすべてのウィンドウは、同じ親を持つ必要があります。
[in, optional] hWndInsertAfter
型: HWND
Z オーダーで位置指定されたウィンドウの前にあるウィンドウへのハンドル。 このパラメーターは、ウィンドウ ハンドルまたは次のいずれかの値である必要があります。 uFlags パラメーターで SWP_NOZORDER フラグが設定されている場合、このパラメーターは無視されます。
[in] x
型: int
ウィンドウの左上隅の x 座標。
[in] y
型: int
ウィンドウの左上隅の y 座標。
[in] cx
型: int
ウィンドウの新しい幅 (ピクセル単位)。
[in] cy
型: int
ウィンドウの新しい高さ (ピクセル単位)。
[in] uFlags
型: UINT
ウィンドウのサイズと位置に影響する次の値の組み合わせ。
価値 | Meaning |
---|---|
|
ウィンドウの周囲にフレーム (ウィンドウのクラスの説明で定義) を描画します。 |
|
ウィンドウのサイズが変更されていない場合でも、 WM_NCCALCSIZE メッセージをウィンドウに送信します。 このフラグを指定しない場合、 WM_NCCALCSIZE はウィンドウのサイズが変更されている場合にのみ送信されます。 |
|
ウィンドウを非表示にします。 |
|
ウィンドウをアクティブにしません。 このフラグが設定されていない場合、ウィンドウがアクティブになり、最上位グループまたは最上位以外のグループの一番上に移動されます ( hWndInsertAfter パラメーターの設定に応じて)。 |
|
クライアント領域の内容全体を破棄します。 このフラグが指定されていない場合、ウィンドウのサイズまたは位置を変更した後、クライアント領域の有効な内容が保存され、クライアント領域にコピーされます。 |
|
現在の位置を保持します ( x パラメーターと y パラメーターは無視されます)。 |
|
Z オーダーでの所有者ウィンドウの位置を変更しません。 |
|
変更を再描画しません。 このフラグが設定されている場合、どのような種類の再描画も行われません。 これは、クライアント領域、非クライアント領域 (タイトル バーとスクロール バーを含む)、およびウィンドウの移動の結果として発見された親ウィンドウの任意の部分に適用されます。 このフラグが設定されている場合、アプリケーションは、ウィンドウと親ウィンドウの再描画を必要とする部分を明示的に無効化または再描画する必要があります。 |
|
SWP_NOOWNERZORDER フラグと同じです。 |
|
ウィンドウが WM_WINDOWPOSCHANGING メッセージを受信できないようにします。 |
|
現在のサイズを保持します ( cx パラメーターと cy パラメーターは無視されます)。 |
|
現在の Z オーダーを保持します ( hWndInsertAfter パラメーターは 無視します)。 |
|
ウィンドウを表示します。 |
戻り値
型: HDWP
戻り値は、更新された複数ウィンドウの位置構造を識別します。 この関数によって返されるハンドルは、関数に渡されるハンドルとは異なる場合があります。 この関数が返す新しいハンドルは、 DeferWindowPos または EndDeferWindowPos 関数の次の呼び出し中に渡す必要があります。
関数が正常に実行できるシステム リソースが不足している場合、戻り値は NULL になります。 拡張エラー情報を取得するには、GetLastError
注釈
DeferWindowPos の呼び出しが失敗した場合、アプリケーションはウィンドウ配置操作を中止し、EndDeferWindowPos を呼び出す必要はありません。
SWP_NOZORDERが指定されていない場合、hWnd パラメーターで識別されるウィンドウは、hWndInsertAfter パラメーターで識別されるウィンドウの後の位置に配置されます。 hWndInsertAfter が NULL またはHWND_TOPの場合、システムは hWnd ウィンドウを Z オーダーの先頭に配置します。 hWndInsertAfter が HWND_BOTTOM に設定されている場合、システムは hWnd ウィンドウを Z オーダーの一番下に配置します。
子ウィンドウのすべての座標は、親ウィンドウのクライアント領域の左上隅を基準とします。
ウィンドウは、 hWndInsertAfter を HWND_TOPMOST フラグに設定し、 SWP_NOZORDER フラグが設定されていないことを確認するか、既存の最上位ウィンドウの上になるようにウィンドウの位置を Z 順に設定することで、最上位ウィンドウにすることができます。 最上位以外のウィンドウが一番上に作成されると、その所有ウィンドウも最上位になります。 ただし、その所有者は変更されません。
SWP_NOACTIVATEフラグもSWP_NOZORDERフラグも指定されていない場合 (つまり、アプリケーションがウィンドウを同時にアクティブ化し、Z オーダー内の位置を変更することを要求した場合)、hWndInsertAfter で指定された値は、次の状況でのみ使用されます。
- hWndInsertAfter では、HWND_TOPMOSTフラグもHWND_NOTOPMOSTフラグも指定されません。
- hWnd によって識別されるウィンドウがアクティブウィンドウではありません。
最上位ウィンドウは、Z オーダーの一番下 (HWND_BOTTOM) に位置が変更された場合、または最上位以外のウィンドウの後に配置されなくなりました。 一番上のウィンドウが最上位以外のウィンドウになると、その所有者とその所有ウィンドウも最上位以外のウィンドウになります。
最上位以外のウィンドウは一番上のウィンドウを所有できますが、その逆は所有できません。 一番上のウィンドウが所有するウィンドウ (ダイアログ ボックスなど) は、そのウィンドウ自体が最上位のウィンドウに設定され、所有されているすべてのウィンドウが所有者の上に維持されます。
Requirements
Requirement | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
Windows |
Header | winuser.h (Windows.h を含む) |
Library | User32.lib |
DLL | User32.dll |
API セット | ext-ms-win-ntuser-window-l1-1-4 (Windows 10 バージョン 10.0.14393 で導入) |
こちらも参照ください
概念
リファレンス