À propos des contrôles Trackbar
Une barre de suivi est une fenêtre qui contient un curseur (parfois appelé pouce) dans un canal et des graduations facultatives. Lorsque l’utilisateur déplace le curseur, à l’aide de la souris ou des touches de direction, la barre de suivi envoie des messages de notification pour indiquer la modification.
- Plage de sélection
- Messages de barre de suivi
- Trackbar Notification Messages
- Traitement des messages trackbar par défaut
- Info-bulles de barre de suivi
Les barres de suivi sont utiles lorsque vous souhaitez que l’utilisateur sélectionne une valeur entière non signée discrète ou un ensemble de valeurs entières non signées consécutives dans une plage. Par exemple, vous pouvez utiliser une barre de suivi pour permettre à l’utilisateur de définir le taux de répétition du clavier en déplaçant le curseur vers une coche donnée. L’illustration suivante montre une barre de suivi classique.
Le curseur d’une barre de suivi se déplace par incréments que vous spécifiez lorsque vous le créez. Les valeurs de cette plage sont appelées unités logiques. Par exemple, si vous spécifiez que la barre de suivi doit avoir des unités logiques comprises entre 0 et 5, le curseur ne peut occuper que six positions : une position à gauche de la barre de suivi et une position pour chaque incrément de la plage. En règle générale, chacune de ces positions est identifiée par une coche ; toutefois, le nombre de graduations est arbitraire et peut être inférieur au nombre de positions logiques.
Vous créez une barre de suivi à l’aide de la fonction CreateWindowEx , en spécifiant la classe de fenêtre TRACKBAR_CLASS . Une fois que vous avez créé une barre de suivi, vous pouvez utiliser des messages de barre de suivi pour définir et récupérer un grand nombre de ses propriétés. Les modifications que vous pouvez apporter incluent la définition des positions minimales et maximales du curseur, le dessin de coches, la définition d’une plage de sélection et le repositionnement du curseur.
Plage de sélection
Si vous créez une barre de suivi avec le style TBS_ENABLESELRANGE , vous pouvez spécifier une plage de sélection. La barre de suivi met en évidence la plage de sélection et affiche des graduations triangulaires au début et à la fin, comme illustré dans l’illustration suivante.
La plage de sélection de la barre de suivi n’affecte en aucun cas ses fonctionnalités. C’est à l’application d’implémenter la plage. Vous pouvez effectuer cette opération de l’une des manières suivantes :
- Utilisez une plage de sélection pour permettre à l’utilisateur de définir des valeurs maximales et minimales pour certains paramètres. Par exemple, l’utilisateur peut déplacer le curseur vers une position, puis cliquer sur un bouton intitulé « Max ». L’application définit ensuite la plage de sélection pour afficher les valeurs choisies par l’utilisateur.
- Limitez le déplacement du curseur à une sous-plage prédéterminée au sein du contrôle, en gérant la notification WM_HSCROLL ou WM_VSCROLL et en refusant tout déplacement en dehors de la plage de sélection. Vous pouvez le faire, par exemple, si la plage de valeurs disponible pour l’utilisateur peut changer en raison d’autres choix effectués par l’utilisateur, ou en fonction des ressources disponibles.
Messages de barre de suivi
Les unités logiques d’une barre de suivi sont l’ensemble de valeurs contiguës que la barre de suivi peut représenter. Ils sont généralement définis en spécifiant la plage de valeurs possibles avec un message TBM_SETRANGE dès que la barre de suivi a été créée. Les applications peuvent modifier dynamiquement la plage en utilisant TBM_SETRANGE, TBM_SETRANGEMAX ou TBM_SETRANGEMIN.
Pour récupérer la position du curseur (c’est-à-dire la valeur choisie par l’utilisateur), utilisez le message TBM_GETPOS . Pour définir la position du curseur, utilisez le message TBM_SETPOS .
Une barre de suivi affiche automatiquement des marques de graduation au début et à la fin, sauf si vous spécifiez le style TBS_NOTICKS . (Dans l’éditeur de ressources Microsoft Visual Studio, cela signifie que la propriété Marques de graduation a la valeur False.) Vous pouvez utiliser le style TBS_AUTOTICKS pour afficher automatiquement des marques de graduation supplémentaires à intervalles réguliers le long de la barre de suivi. Par défaut, une barre de suivi TBS_AUTOTICKS affiche une coche à chaque incrément de la plage de la barre de suivi. Pour spécifier un autre intervalle pour les marques de graduation automatiques, envoyez le message TBM_SETTICFREQ à la barre de suivi. Par exemple, vous pouvez utiliser ce message pour afficher seulement 10 coches dans une plage comprise entre 1 et 100.
Pour définir la position d’une seule coche, envoyez le message TBM_SETTIC . Une barre de suivi conserve un tableau de valeurs DWORD qui stocke la position de chaque coche. Le tableau n’inclut pas les premières et dernières graduations, que la barre de suivi crée automatiquement. Vous pouvez spécifier un index dans ce tableau lorsque vous envoyez le message TBM_GETTIC pour récupérer la position de la coche correspondante. Vous pouvez également envoyer le message TBM_GETPTICS pour récupérer un pointeur vers le tableau. Le nombre d’éléments dans le tableau est égal à deux de moins que le nombre de cases retourné par le message TBM_GETNUMTICS . Cela est dû au fait que le nombre retourné par TBM_GETNUMTICS inclut les premières et dernières graduations, qui ne sont pas incluses dans le tableau. Pour récupérer la position physique d’une coche, dans les coordonnées client de la fenêtre de la barre de suivi, envoyez le message TBM_GETTICPOS . Le message TBM_CLEARTICS supprime tout sauf le premier et le dernier des graduations d’une barre de suivi.
La taille de ligne d’une barre de suivi détermine la distance à laquelle le curseur se déplace en réponse à l’entrée du clavier à partir des touches de direction, telles que la flèche droite ou la flèche vers le bas. Pour récupérer ou définir la taille de ligne, envoyez les messages TBM_GETLINESIZE et TBM_SETLINESIZE . La barre de suivi envoie également le TB_LINEUP et TB_LINEDOWN codes de notification à sa fenêtre parente lorsque l’utilisateur appuie sur les touches de direction.
La taille de page d’une barre de suivi détermine la distance à laquelle le curseur se déplace en réponse à l’entrée du clavier, comme la touche PAGE HAUT ou PAGE BAS, ou l’entrée de la souris, comme les clics dans le canal trackbar. Pour récupérer ou définir la taille de page, envoyez les messages TBM_GETPAGESIZE et TBM_SETPAGESIZE . La barre de suivi envoie également le TB_PAGEUP et TB_PAGEDOWN codes de notification à sa fenêtre parente lorsqu’elle reçoit l’entrée du clavier ou de la souris qui fait défiler la page. Pour plus d’informations, consultez Messages de notification trackbar.
Une application peut envoyer des messages pour récupérer les dimensions d’une barre de suivi. Le message TBM_GETTHUMBRECT récupère le rectangle englobant du curseur. Le message TBM_GETTHUMBLENGTH récupère la longueur du curseur. Le message TBM_GETCHANNELRECT récupère le rectangle englobant du canal de la barre de piste, qui est la zone sur laquelle le curseur se déplace. Il contient la mise en surbrillance lorsqu’une plage est sélectionnée. Si une barre de suivi a le style TBS_FIXEDLENGTH , vous pouvez envoyer le message TBM_SETTHUMBLENGTH pour modifier la longueur du curseur.
Vous récupérez ou définissez la plage de sélection en envoyant des messages à la barre de suivi. Utilisez le message TBM_SETSEL pour définir les positions de début et de fin d’une sélection. Pour définir uniquement la position de départ ou la position de fin d’une sélection, envoyez un message TBM_SETSELSTART ou TBM_SETSELEND . Pour récupérer les positions de début ou de fin d’une plage de sélection, envoyez un message TBM_GETSELSTART ou TBM_GETSELEND . Pour effacer une plage de sélection et restaurer la barre de suivi à sa plage d’origine, envoyez le message TBM_CLEARSEL .
Notes
Il incombe à l’application de s’assurer que l’utilisateur ne peut pas sélectionner des valeurs en dehors de la plage de sélection. Le contrôle lui-même n’empêche pas l’utilisateur de déplacer le curseur en dehors de la plage.
Trackbar Notification Messages
Une barre de suivi avertit sa fenêtre parente des actions de l’utilisateur en envoyant au parent un message WM_HSCROLL ou WM_VSCROLL . Une barre de suivi avec le style TBS_HORZ envoie WM_HSCROLL messages. Une barre de suivi avec le style TBS_VERT envoie WM_VSCROLL messages. Le mot de bas ordre du paramètre wParam de WM_HSCROLL ou WM_VSCROLL contient le code de notification. Pour les codes de notification TB_THUMBPOSITION et TB_THUMBTRACK, le mot d’ordre élevé du paramètre wParam spécifie la position du curseur. Pour tous les autres codes de notification, le mot d’ordre élevé est zéro ; envoyez le message TBM_GETPOS pour déterminer la position du curseur. Le paramètre lParam est le handle de la barre de suivi.
Le système envoie les codes de notification TB_BOTTOM, TB_LINEDOWN, TB_LINEUP et TB_TOP uniquement lorsque l’utilisateur interagit avec une barre de suivi à l’aide du clavier. Les codes de notification TB_THUMBPOSITION et TB_THUMBTRACK ne sont envoyés que lorsque l’utilisateur utilise la souris. Les codes de notification TB_ENDTRACK, TB_PAGEDOWN et TB_PAGEUP sont envoyés dans les deux cas. Le tableau suivant répertorie les codes de notification de la barre de suivi et les événements (codes de clé virtuelle ou événements de souris) qui provoquent l’envoi des notifications de codes de clé virtuelle.
Code de notification | Motif de l’envoi |
---|---|
TB_BOTTOM | VK_END |
TB_ENDTRACK | WM_KEYUP (l’utilisateur a publié une clé qui a envoyé un code de clé virtuelle approprié) |
TB_LINEDOWN | VK_RIGHT ou VK_DOWN |
TB_LINEUP | VK_LEFT ou VK_UP |
TB_PAGEDOWN | VK_NEXT (l’utilisateur a cliqué sur le canal ci-dessous ou à droite du curseur) |
TB_PAGEUP | VK_PRIOR (l’utilisateur a cliqué sur le canal au-dessus ou à gauche du curseur) |
TB_THUMBPOSITION | WM_LBUTTONUP suivant un code de notification TB_THUMBTRACK |
TB_THUMBTRACK | Déplacement du curseur (l’utilisateur a fait glisser le curseur) |
TB_TOP | VK_HOME |
Traitement des messages de la barre de suivi par défaut
Cette section décrit le traitement des messages de fenêtre effectué par une barre de suivi.
Message | Traitement effectué |
---|---|
WM_CAPTURECHANGED | Tue le minuteur s’il a été défini pendant WM_LBUTTONDOWN traitement et envoie le code de notification TB_THUMBPOSITION, si nécessaire. Il envoie toujours le code de notification TB_ENDTRACK. |
WM_CREATE | Effectue une initialisation supplémentaire, telle que la définition de la taille de ligne, de la taille de la page et de la fréquence des graduations sur les valeurs par défaut. |
WM_DESTROY | Libère des ressources. |
WM_ENABLE | Repeint la fenêtre de la barre de suivi. |
WM_ERASEBKGND | Efface l’arrière-plan de la fenêtre en utilisant la couleur d’arrière-plan actuelle pour la barre d’accès. |
WM_GETDLGCODE | Retourne la valeur DLGC_WANTARROWS. |
WM_KEYDOWN | Traite les clés de direction et envoie les codes de notification TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP et TB_LINEDOWN, le cas échéant. |
WM_KEYUP | Envoie le code de notification TB_ENDTRACK si la clé était l’une des clés de direction. |
WM_KILLFOCUS | Repeint la fenêtre de la barre de suivi. |
WM_LBUTTONDOWN | Définit le focus et la capture de la souris sur la barre de suivi. Si nécessaire, il définit un minuteur qui détermine la vitesse à laquelle le curseur se déplace vers le curseur de la souris lorsque l’utilisateur maintient le bouton de la souris enfoncé dans la fenêtre. |
WM_LBUTTONUP | Libère la capture de la souris et arrête le minuteur s’il a été défini pendant WM_LBUTTONDOWN traitement. Il envoie le code de notification TB_THUMBPOSITION, si nécessaire. Il envoie toujours le code de notification TB_ENDTRACK. |
WM_MOUSEMOVE | Déplace le curseur et envoie le code de notification TB_THUMBTRACK lors du suivi de la souris (voir WM_TIMER). |
WM_PAINT | Peint la barre de suivi. Si le paramètre wParam n’est pas NULL, le contrôle suppose que la valeur est un HDC et peint à l’aide de ce contexte d’appareil. |
WM_SETFOCUS | Repeint la fenêtre de la barre de suivi. |
WM_SIZE | Définit les dimensions de la barre de suivi, en supprimant le curseur s’il n’y a pas suffisamment d’espace pour l’afficher. |
WM_TIMER | Récupère la position de la souris et met à jour la position du curseur. (Il est reçu uniquement lorsque l’utilisateur fait glisser le curseur.) |
WM_WININICHANGE | Initialise les dimensions du curseur. |
Info-bulles de la barre de suivi
Une barre de suivi créée avec le style TBS_TOOLTIPS a un contrôle d’info-bulle par défaut. L’info-bulle reste visible et affiche la valeur actuelle lorsque l’utilisateur fait glisser le curseur à l’aide de la souris.
Vous pouvez affecter un nouveau contrôle d’info-bulle à une barre de suivi en envoyant le message TBM_SETTOOLTIPS . Pour récupérer le handle dans un contrôle d’info-bulle affecté, utilisez le message TBM_GETTOOLTIPS .