Freigeben über


SetParent-Funktion (winuser.h)

Ändert das übergeordnete Fenster des angegebenen untergeordneten Fensters.

Syntax

HWND SetParent(
  [in]           HWND hWndChild,
  [in, optional] HWND hWndNewParent
);

Parameter

[in] hWndChild

Typ: HWND

Ein Handle für das untergeordnete Fenster.

[in, optional] hWndNewParent

Typ: HWND

Ein Handle für das neue übergeordnete Fenster. Wenn dieser Parameter NULL ist, wird das Desktopfenster zum neuen übergeordneten Fenster. Wenn dieser Parameter HWND_MESSAGE ist, wird das untergeordnete Fenster zu einem Fenster, das nur Nachrichten enthält.

Rückgabewert

Typ: HWND

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Handle für das vorherige übergeordnete Fenster.

Wenn bei der Funktion ein Fehler auftritt, ist der Rückgabewert NULL. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Hinweise

Eine Anwendung kann die SetParent-Funktion verwenden, um das übergeordnete Fenster eines Popupfensters, eines überlappenden oder untergeordneten Fensters festzulegen.

Wenn das durch den hWndChild-Parameter identifizierte Fenster sichtbar ist, führt das System die entsprechende Neugestaltung und Neulackierung durch.

Aus Kompatibilitätsgründen ändert SetParent nicht die WS_CHILD oder WS_POPUP Fensterstile des Fensters, dessen übergeordnetes Element geändert wird. Wenn hWndNewParentNULL ist, sollten Sie daher auch das WS_CHILD Bit löschen und die WS_POPUP Formatvorlage nach dem Aufrufen von SetParent festlegen. Wenn hWndNewParent hingegen nicht NULL ist und das Fenster zuvor ein untergeordnetes Element des Desktops war, sollten Sie die WS_POPUP Formatvorlage löschen und die WS_CHILD Formatvorlage festlegen, bevor SetParent aufgerufen wird.

Wenn Sie das übergeordnete Element eines Fensters ändern, sollten Sie die UISTATE beider Fenster synchronisieren. Weitere Informationen finden Sie unter WM_CHANGEUISTATE und WM_UPDATEUISTATE.

Unerwartetes Verhalten oder Fehler können auftreten, wenn hWndNewParent und hWndChild in verschiedenen DPI-Wahrnehmungsmodi ausgeführt werden. In der folgenden Tabelle wird dieses Verhalten beschrieben:

Vorgang Windows 8.1 Windows 10 (1607 und früher) Windows 10 (1703 und höher)
SetParent (In-Proc) Erzwungenes Zurücksetzen (des aktuellen Prozesses) Fehler (ERROR_INVALID_STATE)
SetParent (Cross-Proc) Erzwungenes Zurücksetzen (des Prozesses des untergeordneten Fensters) Erzwungenes Zurücksetzen (des Prozesses des untergeordneten Fensters) Erzwungenes Zurücksetzen (des Prozesses des untergeordneten Fensters)
 

Weitere Informationen zur DPI-Sensibilisierung finden Sie in der Dokumentation zu Windows High DPI.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-window-l1-1-0 (eingeführt in Windows 8)

Siehe auch

Konzept

GetParent

Referenz

Windows