SetParent

指定されたウィンドウの親ウィンドウを変更します。新しい親ウィンドウは子ウィンドウと同じプロセスに属している必要があります。

HWND SetParent(
    HWND  hwndChild,     // 子ウィンドウのハンドル
    HWND  hwndNewParent  // 新しい親ウィンドウのハンドル
);

USER32.DLL

引数

hwndChild

親ウィンドウを変更する子ウィンドウのハンドルを指定します。

hwndNewParent

新しい親ウィンドウのハンドルを指定します。0 (NULL) を指定すると、トップレベルウィンドウ(親ウィンドウを持たないウィンドウ)になります。

Windows 2000/XP: このパラメータに -3 (HWND_MESSAGE) を指定すると、子ウィンドウはメッセージオンリーウィンドウになります。

戻り値

関数が成功すると、直前の親ウィンドウのハンドルが返ります。

関数が失敗すると 0 (NULL) が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。

解説

指定された子ウィンドウが可視状態にある場合は、ウィンドウが再描画されます。

互換性を保つために、 SetParent 関数は親ウィンドウが変更されても、指定された子ウィンドウの WS_CHILD や WS_POPUP スタイルを変更しません。そのため、トップレベルウィンドウを子ウィンドウに変更する場合は、 SetParent 関数を呼び出す前に、 GetWindowLong 関数および SetWindowLong 関数を用いて、 WS_POPUP スタイルを取り除いて WS_CHILD スタイルを追加しなくてはなりません。逆に、子ウィンドウをトップレベルウィンドウに変更する場合には、 SetParent 関数を呼び出した後に、 WS_CHILD スタイルを取り除いて WS_POPUP スタイルを追加しなくてはなりません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降