À propos des contrôles Up-Down

Un contrôle haut vers le bas est une paire de flèches sur laquelle l’utilisateur peut cliquer pour incrémenter ou décrémenter une valeur, comme une position de défilement ou un nombre affiché dans un contrôle complémentaire (appelé fenêtre d’ami).

Pour l’utilisateur, un contrôle haut-bas et sa fenêtre d’amis ressemblent souvent à un seul contrôle. Vous pouvez spécifier qu’un contrôle up-down se positionne automatiquement à côté de sa fenêtre d’amis et qu’il définit automatiquement la légende de la fenêtre d’amis à sa position actuelle. Par exemple, vous pouvez utiliser un contrôle up-down avec un contrôle d’édition pour inviter l’utilisateur à entrer des données numériques. L’illustration suivante montre un contrôle up-down avec un contrôle d’édition en tant que fenêtre d’amis, une combinaison qui est parfois appelée contrôle de rotation.

capture d’écran montrant un contrôle rectangulaire court et large avec des flèches haut et bas sur le bord droit

Les rubriques suivantes sont abordées dans cette section.

Styles de contrôle Up-Down

À l’aide de styles de fenêtre, vous pouvez manipuler les caractéristiques d’un contrôle haut-bas, comme la façon dont il se positionne par rapport à sa fenêtre d’amis, s’il définit le texte de sa fenêtre d’amis et s’il traite les touches flèche haut et bas.

Un contrôle haut vers le bas avec le style UDS_ALIGNLEFT ou UDS_ALIGNRIGHT s’aligne sur le bord gauche ou droit de sa fenêtre d’amis. La largeur de la fenêtre d’amis est réduite pour s’adapter à la largeur du contrôle haut-bas.

Un contrôle up-down avec le style UDS_SETBUDDYINT définit l’légende de sa fenêtre d’amis chaque fois que la position actuelle change. Le contrôle insère un séparateur de milliers entre les trois chiffres d’une chaîne décimale, sauf si le style UDS_NOTHOUSANDS est spécifié. Si la fenêtre du partenaire est une zone de liste, un contrôle up-down définit sa sélection actuelle au lieu de sa légende.

Vous pouvez spécifier le style UDS_ARROWKEYS pour fournir une interface clavier pour un contrôle haut-bas. Si ce style est spécifié, le contrôle traite les touches de direction haut et bas. Le contrôle sous-classe également la fenêtre d’ami afin qu’elle puisse traiter ces clés lorsque la fenêtre d’ami a le focus.

Si vous utilisez un contrôle haut-bas pour le défilement horizontal, vous pouvez spécifier le style UDS_HORZ . Ce style fait pointer les flèches haut-bas du contrôle vers la gauche et la droite au lieu de haut et de bas.

Par défaut, la position actuelle ne change pas si l’utilisateur tente de l’incrémenter ou de la décrémenter au-delà de la valeur maximale ou minimale. Vous pouvez modifier ce comportement en utilisant le style UDS_WRAP , de sorte que la position « encapsulée » à l’extrême opposé. Par exemple, l’incrémentation au-delà de la limite supérieure ramène la position à la limite inférieure.

Position et accélération

Une fois qu’un contrôle up-down est créé, vous pouvez modifier la position actuelle, la position minimale et la position maximale du contrôle en envoyant des messages. Vous pouvez également modifier la base de radix utilisée pour afficher la position actuelle dans la fenêtre d’ami et la vitesse à laquelle la position actuelle change lorsque vous cliquez sur la flèche haut ou vers le bas.

Pour récupérer la position actuelle d’un contrôle up-down, utilisez le message UDM_GETPOS . Pour un contrôle haut vers le bas avec une fenêtre d’ami, la position actuelle est le nombre dans le légende de la fenêtre d’amis. Étant donné que le légende a peut-être changé (par exemple, l’utilisateur a peut-être modifié le texte d’un contrôle de modification), le contrôle up-down récupère le légende actuel et met à jour sa position actuelle en conséquence.

Le légende de la fenêtre d’amis peut être une chaîne décimale ou hexadécimale, selon la base radix (c’est-à-dire la base 10 ou 16) du contrôle up-down. Vous pouvez définir la base radix à l’aide du message UDM_SETBASE et récupérer la base radix à l’aide du message UDM_GETBASE .

Le message UDM_SETPOS définit la position actuelle d’une fenêtre de partenaire. Notez que contrairement à une barre de défilement, un contrôle haut-bas change automatiquement sa position actuelle lorsque vous cliquez sur les flèches haut et bas. Par conséquent, une application n’a pas besoin de définir la position actuelle lors du traitement du message WM_VSCROLL ou WM_HSCROLL .

Vous pouvez modifier les positions minimales et maximales d’un contrôle up-down à l’aide du message UDM_SETRANGE . La position maximale peut être inférieure à la position minimale, et dans ce cas, cliquer sur le bouton flèche haut diminue la position actuelle. Pour le dire autrement, monter signifie se déplacer vers la position maximale. Pour récupérer les positions minimales et maximales d’un contrôle up-down, utilisez le message UDM_GETRANGE .

Vous pouvez contrôler la vitesse à laquelle la position change lorsque l’utilisateur maintient un bouton fléché vers le bas en définissant l’accélération du contrôle haut-bas. L’accélération est définie par un tableau de structures UDACCEL . Chaque structure spécifie un intervalle de temps et le nombre d’unités à incrémenter ou décrémenter à la fin de cet intervalle. Pour définir l’accélération, utilisez le message UDM_SETACCEL . Pour récupérer des informations sur l’accélération, utilisez le message UDM_GETACCEL .

La Up-Down par défaut contrôle le traitement des messages

Cette section décrit les messages Windows standard traités par un contrôle up-down.

Message Traitement effectué
WM_CREATE Alloue et initialise une structure de données privée et enregistre son adresse en tant que données de fenêtre.
WM_DESTROY Libère les données allouées pendant WM_CREATE traitement.
WM_ENABLE Invalide la fenêtre.
WM_KEYDOWN Modifie la position actuelle dans le cas d’une flèche haut ou d’une flèche bas.
WM_KEYUP Termine le changement de position.
WM_LBUTTONDOWN Capture la souris. Si la fenêtre du partenaire est un contrôle d’édition ou une zone de liste, elle définit le focus sur la fenêtre d’ami. Si la souris est sur le bouton haut ou bas, elle commence à modifier la position et définit un minuteur.
WM_LBUTTONUP Termine le changement de position et libère la capture de la souris si le contrôle haut-bas a capturé la souris. Si la fenêtre du partenaire est un contrôle d’édition, elle sélectionne tout le texte dans le contrôle d’édition.
WM_PAINT Peint le contrôle up-down. Si le paramètre wParam n’a pas la valeur NULL, le contrôle suppose que la valeur est un HDC et peint à l’aide de ce contexte d’appareil.
WM_TIMER Modifie la position actuelle si la souris est enfoncée sur un bouton et qu’un intervalle suffisant s’est écoulé.