SetParent, fonction (winuser.h)

Modifie la fenêtre parente de la fenêtre enfant spécifiée.

Syntaxe

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

Paramètres

[in] hWndChild

Type : HWND

Handle vers la fenêtre enfant.

[in, optional] hWndNewParent

Type : HWND

Handle vers la nouvelle fenêtre parente. Si ce paramètre a la valeur NULL, la fenêtre de bureau devient la nouvelle fenêtre parente. Si ce paramètre est HWND_MESSAGE, la fenêtre enfant devient une fenêtre de message uniquement.

Valeur retournée

Type : HWND

Si la fonction réussit, la valeur de retour est un handle de la fenêtre parente précédente.

Si la fonction échoue, la valeur de retour est NULL. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Une application peut utiliser la fonction SetParent pour définir la fenêtre parente d’une fenêtre contextuelle, superposée ou enfant.

Si la fenêtre identifiée par le paramètre hWndChild est visible, le système effectue le redessinage et le repeint appropriés.

Pour des raisons de compatibilité, SetParent ne modifie pas les styles de fenêtre WS_CHILD ou WS_POPUP de la fenêtre dont le parent est en cours de modification. Par conséquent, si hWndNewParent a la valeur NULL, vous devez également effacer le bit WS_CHILD et définir le style WS_POPUP après avoir appelé SetParent. À l’inverse, si hWndNewParentn’a pas la valeur NULL et que la fenêtre était auparavant un enfant du bureau, vous devez effacer le style WS_POPUP et définir le style WS_CHILD avant d’appeler SetParent.

Lorsque vous modifiez le parent d’une fenêtre, vous devez synchroniser l’UISTATE des deux fenêtres. Pour plus d’informations, consultez WM_CHANGEUISTATE et WM_UPDATEUISTATE.

Des erreurs ou des comportements inattendus peuvent se produire si hWndNewParent et hWndChild s’exécutent dans différents modes de reconnaissance ppp. Le tableau ci-dessous décrit ce comportement :

Opération Windows 8.1 Windows 10 (1607 et versions antérieures) Windows 10 (1703 et versions ultérieures)
SetParent (in-proc) N/A Réinitialisation forcée (du processus actuel) Échec (ERROR_INVALID_STATE)
SetParent (cross-proc) Réinitialisation forcée (du processus de la fenêtre enfant) Réinitialisation forcée (du processus de la fenêtre enfant) Réinitialisation forcée (du processus de la fenêtre enfant)
 

Pour plus d’informations sur la prise en charge des ppp, consultez la documentation Windows High DPI.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-window-l1-1-0 (introduit dans Windows 8)

Voir aussi

Conceptuel

GetParent

Référence

Windows