Fonction DeferWindowPos (winuser.h)
Mises à jour la structure de position à fenêtres multiples spécifiée pour la fenêtre spécifiée. La fonction retourne ensuite un handle à la structure mise à jour. La fonction EndDeferWindowPos utilise les informations de cette structure pour modifier simultanément la position et la taille d’un certain nombre de fenêtres. La fonction BeginDeferWindowPos crée la structure.
Syntaxe
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
);
Paramètres
[in] hWinPosInfo
Type : HDWP
Handle d’une structure de position à plusieurs fenêtres qui contient des informations de taille et de position pour une ou plusieurs fenêtres. Cette structure est retournée par BeginDeferWindowPos ou par l’appel le plus récent à DeferWindowPos.
[in] hWnd
Type : HWND
Handle de la fenêtre pour laquelle les informations de mise à jour sont stockées dans la structure. Toutes les fenêtres d’une structure de position à plusieurs fenêtres doivent avoir le même parent.
[in, optional] hWndInsertAfter
Type : HWND
Poignée de la fenêtre qui précède la fenêtre positionnée dans l’ordre Z. Ce paramètre doit être un handle de fenêtre ou l’une des valeurs suivantes. Ce paramètre est ignoré si l’indicateur SWP_NOZORDER est défini dans le paramètre uFlags .
[in] x
Type : int
Coordonnée x du coin supérieur gauche de la fenêtre.
[in] y
Type : int
Coordonnée y du coin supérieur gauche de la fenêtre.
[in] cx
Type : int
Nouvelle largeur de la fenêtre, en pixels.
[in] cy
Type : int
Nouvelle hauteur de la fenêtre, en pixels.
[in] uFlags
Type : UINT
Combinaison des valeurs suivantes qui affectent la taille et la position de la fenêtre.
Valeur | Signification |
---|---|
|
Dessine un cadre (défini dans la description de classe de la fenêtre) autour de la fenêtre. |
|
Envoie un message WM_NCCALCSIZE à la fenêtre, même si la taille de la fenêtre n’est pas modifiée. Si cet indicateur n’est pas spécifié, WM_NCCALCSIZE est envoyé uniquement lorsque la taille de la fenêtre est modifiée. |
|
Masque la fenêtre. |
|
N’active pas la fenêtre. Si cet indicateur n’est pas défini, la fenêtre est activée et déplacée vers le haut du groupe le plus haut ou non supérieur (en fonction du paramètre hWndInsertAfter ). |
|
Ignore tout le contenu de la zone cliente. Si cet indicateur n’est pas spécifié, le contenu valide de la zone client est enregistré et copié dans la zone client une fois la fenêtre dimensionnée ou repositionnée. |
|
Conserve la position actuelle (ignore les paramètres x et y ). |
|
Ne modifie pas la position de la fenêtre propriétaire dans l’ordre Z. |
|
Ne redessine pas les modifications. Si cet indicateur est défini, aucun repeint de quelque type que ce soit ne se produit. Cela s’applique à la zone cliente, à la zone non cliente (y compris la barre de titre et les barres de défilement) et à toute partie de la fenêtre parente découverte suite au déplacement de la fenêtre. Lorsque cet indicateur est défini, l’application doit invalider ou redessiner explicitement toutes les parties de la fenêtre et de la fenêtre parente qui doivent être redessinés. |
|
Identique à l’indicateur SWP_NOOWNERZORDER . |
|
Empêche la fenêtre de recevoir le message WM_WINDOWPOSCHANGING . |
|
Conserve la taille actuelle (ignore les paramètres cx et cy ). |
|
Conserve l’ordre Z actuel (ignore le paramètre hWndInsertAfter ). |
|
Affiche la fenêtre. |
Valeur retournée
Type : HDWP
La valeur de retour identifie la structure de plusieurs fenêtres - position mise à jour. Le handle retourné par cette fonction peut différer du handle passé à la fonction. Le nouveau handle retourné par cette fonction doit être passé lors de l’appel suivant à la fonction DeferWindowPos ou EndDeferWindowPos .
Si des ressources système insuffisantes sont disponibles pour que la fonction réussisse, la valeur de retour est NULL. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Si un appel à DeferWindowPos échoue, l’application doit abandonner l’opération de positionnement de fenêtre et ne pas appeler EndDeferWindowPos.
Si SWP_NOZORDER n’est pas spécifié, le système place la fenêtre identifiée par le paramètre hWnd dans la position qui suit la fenêtre identifiée par le paramètre hWndInsertAfter . Si hWndInsertAfter a la valeur NULL ou HWND_TOP, le système place la fenêtre hWnd en haut de l’ordre Z. Si hWndInsertAfter est défini sur HWND_BOTTOM, le système place la fenêtre hWnd en bas de l’ordre Z.
Toutes les coordonnées des fenêtres enfants sont relatives au coin supérieur gauche de la zone cliente de la fenêtre parente.
Une fenêtre peut être une fenêtre la plus haute en définissant hWndInsertAfter sur l’indicateur HWND_TOPMOST et en veillant à ce que l’indicateur SWP_NOZORDER n’est pas défini, soit en définissant la position de la fenêtre dans l’ordre Z afin qu’elle se trouve au-dessus des fenêtres les plus supérieures existantes. Lorsqu’une fenêtre non supérieure est la plus haute, les fenêtres qui lui appartiennent sont également les plus haut. Ses propriétaires, cependant, ne sont pas modifiés.
Si ni l’indicateur SWP_NOACTIVATE ni SWP_NOZORDER n’est spécifié (autrement dit, lorsque l’application demande qu’une fenêtre soit activée simultanément et que sa position dans l’ordre Z ait changé), la valeur spécifiée dans hWndInsertAfter est utilisée uniquement dans les circonstances suivantes :
- Ni l’indicateur HWND_TOPMOST ni HWND_NOTOPMOST n’est spécifié dans hWndInsertAfter.
- La fenêtre identifiée par hWnd n’est pas la fenêtre active.
Une fenêtre la plus haute n’est plus la plus haute si elle est repositionnée en bas (HWND_BOTTOM) de l’ordre Z ou après une fenêtre non supérieure. Lorsqu’une fenêtre la plus haute est rendue non la plus haute, ses propriétaires et ses fenêtres propriétaires sont également faits de fenêtres non supérieures.
Une fenêtre non supérieure peut posséder une fenêtre la plus haute, mais pas l’inverse. Toute fenêtre (par exemple, une boîte de dialogue) appartenant à une fenêtre la plus haute est elle-même une fenêtre la plus haute pour garantir que toutes les fenêtres détenues restent au-dessus de leur propriétaire.
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-4 (introduit dans Windows 10, version 10.0.14393) |
Voir aussi
Conceptuel
Référence