Partager via


Fonction DeferWindowPos (winuser.h)

Met à jour la structure de position multiple 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 la position et la taille d’un certain nombre de fenêtres simultanément. 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 vers une structure à plusieurs fenêtres : structure de position 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 vers la fenêtre pour laquelle les informations de mise à jour sont stockées dans la structure. Toutes les fenêtres d’une fenêtre multiple : la structure de position doit avoir le même parent.

[in, optional] hWndInsertAfter

Type : HWND

Handle vers 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 .

Valeur Meaning
HWND_BOTTOM
((HWND)1)
Place la fenêtre en bas de l’ordre Z. Si le paramètre hWnd identifie une fenêtre la plus haute, la fenêtre perd son état le plus haut et est placée en bas de toutes les autres fenêtres.
HWND_NOTOPMOST
((HWND)-2)
Place la fenêtre au-dessus de toutes les fenêtres non supérieures (c’est-à-dire derrière toutes les fenêtres les plus hauts). Cet indicateur n’a aucun effet si la fenêtre est déjà une fenêtre non supérieure.
HWND_TOP
((HWND)0)
Place la fenêtre en haut de la commande Z.
HWND_TOPMOST
((HWND)-1)
Place la fenêtre au-dessus de toutes les fenêtres non supérieures. La fenêtre conserve sa position la plus haute, même lorsqu’elle est désactivée.

[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 Meaning
SWP_DRAWFRAME
0x0020
Dessine un cadre (défini dans la description de classe de la fenêtre) autour de la fenêtre.
SWP_FRAMECHANGED
0x0020
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.
SWP_HIDEWINDOW
0x0080
Masque la fenêtre.
SWP_NOACTIVATE
0x0010
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 le plus haut (selon le paramètre hWndInsertAfter ).
SWP_NOCOPYBITS
0x0100
Ignore l’intégralité du contenu de la zone cliente. Si cet indicateur n’est pas spécifié, le contenu valide de la zone cliente est enregistré et copié dans la zone cliente une fois la fenêtre dimensionnée ou repositionnée.
SWP_NOMOVE
0x0002
Conserve la position actuelle (ignore les paramètres x et y ).
SWP_NOOWNERZORDER
0x0200
Ne modifie pas la position de la fenêtre propriétaire dans l’ordre Z.
SWP_NOREDRAW
0x0008
Ne redessine pas les modifications. Si cet indicateur est défini, aucune peinture d’un type quelconque 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 ont besoin de redessiner.
SWP_NOREPOSITION
0x0200
Identique à l’indicateur SWP_NOOWNERZORDER .
SWP_NOSENDCHANGING
0x0400
Empêche la fenêtre de recevoir le message WM_WINDOWPOSCHANGING .
SWP_NOSIZE
0x0001
Conserve la taille actuelle (ignore les paramètres cx et cy ).
SWP_NOZORDER
0x0004
Conserve l’ordre Z actuel (ignore le paramètre hWndInsertAfter ).
SWP_SHOWWINDOW
0x0040
Affiche la fenêtre.

Valeur retournée

Type : HDWP

La valeur de retour identifie la structure de position multiple 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’erreur étendues, 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 suivant 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 constituée d’une fenêtre la plus haute en définissant hWndInsertAfter sur l’indicateur de HWND_TOPMOST et en veillant à ce que l’indicateur de SWP_NOZORDER ne soit pas défini, soit en définissant la position de la fenêtre dans l’ordre Z afin qu’elle soit au-dessus des fenêtres les plus grandes existantes. Lorsqu’une fenêtre non la plus haute est la plus haute, ses fenêtres détenues sont également les plus haut. Toutefois, ses propriétaires 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 sa position dans l’ordre Z modifié), 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 application ne peut pas activer une fenêtre inactive sans l’amener en haut de l’ordre Z. Une application peut modifier la position d’une fenêtre activée dans l’ordre Z sans restrictions, ou activer une fenêtre, puis la déplacer vers le haut des fenêtres les plus hauts ou non supérieures.

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 faite non supérieure, ses propriétaires et ses fenêtres détenues sont également faits de fenêtres non supérieures.

Une fenêtre non la plus haute peut posséder une fenêtre la plus haute, mais pas inversement. Toute fenêtre (par exemple, une boîte de dialogue) appartenant à une fenêtre la plus haute est elle-même constituée d’une fenêtre la plus haute pour s’assurer que toutes les fenêtres détenues restent au-dessus de leur propriétaire.

Spécifications

Requirement Valeur
Client minimum requis Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Fenêtres
Header winuser.h (include Windows.h)
Library 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

BeginDeferWindowPos

conceptuelle

EndDeferWindowPos

Référence

ShowWindow

Windows