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
-
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.
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 |
---|---|
|
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 . |
|
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. |
|
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 . |
|
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 . |
|
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 |
|
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 |
|
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 . |
|
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. |
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.
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 |
|
-
Référence
-
Conceptuel
-
Autres ressources