Partager via


À propos de Carets

Le système fournit un point d’attente par file d’attente de messages. Une fenêtre ne doit créer un signe d’insertion que lorsqu’elle a le focus clavier ou qu’elle est active. La fenêtre doit détruire l’insertion avant de perdre le focus du clavier ou de devenir inactive. Pour plus d’informations sur la saisie au clavier, consultez Saisie du clavier.

Utilisez la fonction CreateCaret pour spécifier les paramètres d’une insertion. Le système forme un caret en inversant la couleur de pixel dans le rectangle spécifié par la position, la largeur et la hauteur du caret. La largeur et la hauteur sont spécifiées en unités logiques ; par conséquent, l’apparence d’un caret est soumise au mode de mappage de la fenêtre.

Les rubriques suivantes sont traitées dans cette section.

Visibilité de l’attention

Une fois l’insertion définie, utilisez la fonction ShowCaret pour rendre l’insertion visible. Lorsque le signe s’affiche, il commence automatiquement à clignoter. Pour afficher un signe d’insertion solide, le système inverse chaque pixel du rectangle ; pour afficher un signe gris, le système inverse tous les deux pixels ; pour afficher un signe d’insertion bitmap, le système inverse uniquement les bits blancs de la bitmap.

Le temps écoulé, en millisecondes, nécessaire pour inverser l’insertion est appelé temps de clignotement. Le signe d’insertion clignote tant que le thread qui possède la file d’attente de messages dispose d’une pompe de messages qui traite les messages.

L’utilisateur peut définir l’heure de clignotement de l’insertion à l’aide du Panneau de configuration et les applications doivent respecter les paramètres choisis par l’utilisateur. Une application peut déterminer la durée de clignotement de l’insertion à l’aide de la fonction GetCaretBlinkTime . Si vous écrivez une application qui permet à l’utilisateur d’ajuster le temps de clignotement, par exemple une applet de Panneau de configuration, utilisez la fonction SetCaretBlinkTime pour définir la vitesse du temps de clignotement sur un nombre spécifié de millisecondes.

Le temps d’flash est le temps écoulé, en millisecondes, nécessaire pour afficher, inverser et restaurer l’affichage du caret. Le temps de flash d’un caret est deux fois plus long que le temps de clignotement.

Position de l’insertion

Vous pouvez déterminer la position du caret à l’aide de la fonction GetCaretPos . La position, en coordonnées client, est copiée dans une structure spécifiée par un paramètre dans GetCaretPos. Une application peut déplacer un signe d’insertion dans une fenêtre à l’aide de la fonction SetCaretPos . Une fenêtre ne peut déplacer un signe d’insertion que si elle est déjà propriétaire de l’insertion. SetCaretPos peut déplacer l’insertion, qu’elle soit visible ou non.

Suppression d’un caret

Vous pouvez supprimer temporairement un caret en le masquant, ou vous pouvez supprimer définitivement le caret en le détruisant. Pour masquer l’insertion, utilisez la fonction HideCaret . Cela s’avère utile lorsque votre application doit redessiner l’écran lors du traitement d’un message, mais doit garder le signe d’attention hors de la voie. Une fois le dessin terminé, l’application peut afficher à nouveau le signe d’insertion à l’aide de la fonction ShowCaret . Le masquage de l’insertion ne détruit pas sa forme et n’invalide pas le point d’insertion. Le masquage de l’insertion est cumulatif; autrement dit, si l’application appelle HideCaret cinq fois, elle doit également appeler ShowCaret cinq fois avant que l’attention ne réapparaisse.

Pour supprimer l’insertion de l’écran et détruire sa forme, utilisez la fonction DestroyCaret . DestroyCaret détruit le caret uniquement si la fenêtre impliquée dans la tâche actuelle est propriétaire du caret.