Comment interagir avec la sélection actuelle
L’utilisateur peut sélectionner du texte dans un contrôle d’édition enrichi à l’aide de la souris ou du clavier. La sélection actuelle est la plage de caractères sélectionnés ou la position du point d’insertion si aucun caractère n’est sélectionné. Une application peut obtenir des informations sur la sélection actuelle, la définir, déterminer quand elle change et afficher ou masquer la sélection en surbrillance.
- C/C++
- Programmation de l’interface utilisateur Windows
Pour déterminer la sélection actuelle dans un contrôle d’édition enrichi, utilisez le message EM_EXGETSEL . Pour définir la sélection actuelle, utilisez le message EM_EXSETSEL . La structure CHARRANGE est utilisée avec les deux messages et spécifie une plage de caractères. Pour récupérer des informations sur le contenu de la sélection actuelle, vous pouvez utiliser le message EM_SELECTIONTYPE .
Une application peut détecter quand la sélection actuelle change en traitant le code de notification EN_SELCHANGE . Le code de notification spécifie une structure SELCHANGE qui contient des informations sur la nouvelle sélection. Un contrôle d’édition enrichi envoie ce code de notification uniquement si vous l’activez à l’aide du message EM_SETEVENTMASK .
Par défaut, un contrôle d’édition enrichi affiche et masque la sélection en surbrillance lorsqu’il gagne et perd le focus. Vous pouvez afficher ou masquer la sélection en surbrillance à tout moment à l’aide du message EM_HIDESELECTION . Par exemple, une application peut fournir une boîte de dialogue Rechercher pour rechercher du texte dans un contrôle d’édition enrichi. L’application peut sélectionner le texte correspondant sans fermer la boîte de dialogue, auquel cas elle doit utiliser le message EM_HIDESELECTION pour mettre en surbrillance la sélection.
Comme avec les contrôles d’édition, vous pouvez spécifier le style de fenêtre ES_NOHIDESEL pour empêcher un contrôle d’édition enrichi de masquer la mise en surbrillance de la sélection lorsqu’il perd le focus.
En guise d’alternative à l’utilisation des messages EM_EXGETSEL et EM_EXSETSEL , vous pouvez récupérer et définir la sélection actuelle à l’aide des messages de contrôle EM_GETSEL et EM_SETSEL modifier. Le message EM_GETSEL contient deux index de caractères 16 bits dans sa valeur de retour 32 bits et fonctionne donc uniquement pour les sélections qui se trouvent entièrement dans le premier 64 000. Toutefois, un contrôle d’édition enrichi ne contiendra jamais plus de 32 000 caractères de texte, sauf si vous étendez cette limite à l’aide du message EM_LIMITTEXT ou EM_EXLIMITTEXT . Pour les sélections qui s’étendent au-delà des 64 premières Ko de texte, le message EM_GETSEL retourne –1. Dans ce cas, vous pouvez toujours utiliser les valeurs retournées dans wParam et lParam pour rechercher les caractères de début et de fin de la sélection.