WM_NCCALCSIZE message

Envoyé lorsque la taille et la position de la zone cliente d’une fenêtre doivent être calculées. En traitant ce message, une application peut contrôler le contenu de la zone cliente de la fenêtre lorsque la taille ou la position de la fenêtre change.

Une fenêtre reçoit ce message via sa fonction WindowProc.

#define WM_NCCALCSIZE                   0x0083

Paramètres

wParam

Si wParam a la valeur TRUE, il spécifie que l’application doit indiquer quelle partie de la zone cliente contient des informations valides. Le système copie les informations valides dans la zone spécifiée dans la nouvelle zone cliente.

Si wParam a la valeur FALSE, l’application n’a pas besoin d’indiquer la partie valide de la zone cliente.

lParam

Si wParam a la valeur TRUE, lParam pointe vers une structure NCCALCSIZE_PARAMS qui contient des informations qu’une application peut utiliser pour calculer la nouvelle taille et la nouvelle position du rectangle client.

Si wParam a la valeur FALSE, lParam pointe vers une structure RECT . Lors de l’entrée, la structure contient le rectangle de fenêtre proposé pour la fenêtre. À la sortie, la structure doit contenir les coordonnées d’écran de la zone cliente de fenêtre correspondante.

Valeur retournée

Type : LRESULT

Si le paramètre wParam a la valeur FALSE, l’application doit retourner zéro.

Si wParam a la valeur TRUE, l’application doit retourner zéro ou une combinaison des valeurs suivantes.

Si wParam a la valeur TRUE et qu’une application retourne zéro, l’ancienne zone cliente est conservée et est alignée sur le coin supérieur gauche de la nouvelle zone cliente.

Code/valeur de retour Description
WVR_ALIGNTOP
0x0010
Spécifie que la zone cliente de la fenêtre doit être conservée et alignée sur le haut de la nouvelle position de la fenêtre. Par exemple, pour aligner la zone cliente sur le coin supérieur gauche, retournez les valeurs WVR_ALIGNTOP et WVR_ALIGNLEFT .
WVR_ALIGNRIGHT
0x0080
Spécifie que la zone cliente de la fenêtre doit être conservée et alignée sur le côté droit de la nouvelle position de la fenêtre. Par exemple, pour aligner la zone cliente sur le coin inférieur droit, retournez les valeurs WVR_ALIGNRIGHT et WVR_ALIGNBOTTOM.
WVR_ALIGNLEFT
0x0020
Spécifie que la zone cliente de la fenêtre doit être conservée et alignée sur le côté gauche de la nouvelle position de la fenêtre. Par exemple, pour aligner la zone cliente sur le coin inférieur gauche, retournez les valeurs WVR_ALIGNLEFT et WVR_ALIGNBOTTOM .
WVR_ALIGNBOTTOM
0x0040
Spécifie que la zone cliente de la fenêtre doit être conservée et alignée avec le bas de la nouvelle position de la fenêtre. Par exemple, pour aligner la zone cliente sur le coin supérieur gauche, retournez les valeurs WVR_ALIGNTOP et WVR_ALIGNLEFT .
WVR_HREDRAW
0x0100
Utilisée en combinaison avec d’autres valeurs, à l’exception de WVR_VALIDRECTS, la fenêtre est entièrement redessinée si le rectangle client change de taille horizontalement. Cette valeur est similaire à CS_HREDRAW style de classe
WVR_VREDRAW
0x0200
Utilisée en combinaison avec d’autres valeurs, à l’exception de WVR_VALIDRECTS, la fenêtre est entièrement redessinée si le rectangle client change de taille verticalement. Cette valeur est similaire à CS_VREDRAW style de classe
WVR_REDRAW
0x0300
Cette valeur entraîne le redessination de la fenêtre entière. Il s’agit d’une combinaison de valeurs WVR_HREDRAW et WVR_VREDRAW .
WVR_VALIDRECTS
0x0400
Cette valeur indique que, au retour de WM_NCCALCSIZE, les rectangles spécifiés par les membres rgrc[1] et rgrc[2] de la structure NCCALCSIZE_PARAMS contiennent respectivement des rectangles de destination et de zone source valides. Le système combine ces rectangles pour calculer la zone de la fenêtre à conserver. Le système copie n’importe quelle partie de l’image de fenêtre qui se trouve dans le rectangle source et clipse l’image dans le rectangle de destination. Les deux rectangles sont en coordonnées parent-relative ou relative à l’écran. Cet indicateur ne peut pas être combiné avec d’autres indicateurs.
Cette valeur de retour permet à une application d’implémenter des stratégies de préservation de la zone client plus élaborées, telles que le centrage ou la conservation d’un sous-ensemble de la zone cliente.

 

Remarques

La fenêtre peut être redessinée, selon que le style de classe CS_HREDRAW ou CS_VREDRAW est spécifié. Il s’agit du traitement par défaut et rétrocompatible de ce message par la fonction DefWindowProc (en plus du calcul de rectangle client habituel décrit dans le tableau précédent).

Lorsque wParam a la valeur TRUE, le simple fait de renvoyer 0 sans traiter les rectangles NCCALCSIZE_PARAMS entraîne le redimensionnement de la zone client à la taille de la fenêtre, y compris le cadre de la fenêtre. Cela supprime le cadre de la fenêtre et les éléments légende de votre fenêtre, laissant uniquement la zone cliente affichée.

À compter de Windows Vista, la suppression de l’image standard en retournant simplement 0 lorsque le wParam a la valeur TRUE n’affecte pas les images qui sont étendues dans la zone cliente à l’aide de la fonction DwmExtendFrameIntoClientArea . Seule la trame standard sera supprimée.

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]
En-tête
Winuser.h (include Windows.h)

Voir aussi

Référence

DefWindowProc

MoveWindow

SetWindowPos

NCCALCSIZE_PARAMS

Conceptuel

Windows

Autres ressources

RECT