Partager via


Comment utiliser des opérations d’édition de texte enrichi

Une application peut envoyer des messages pour récupérer ou rechercher du texte dans un contrôle d’édition enrichi. Vous pouvez récupérer le texte sélectionné ou une plage de texte spécifiée.

Pour obtenir le texte sélectionné dans un contrôle d’édition enrichi, utilisez le message EM_GETSELTEXT . Le texte est copié dans le tableau de caractères spécifié. Vous devez vous assurer que le tableau est suffisamment grand pour contenir le texte sélectionné, ainsi qu’un caractère null de fin.

Pour récupérer une plage de texte spécifiée, utilisez le message EM_GETTEXTRANGE . La structure TEXTRANGE utilisée avec ce message spécifie la plage de texte à récupérer et pointe vers un tableau de caractères qui reçoit le texte. Là encore, l’application doit s’assurer que le tableau est suffisamment grand pour le texte spécifié plus un caractère null de fin.

Vous pouvez rechercher une chaîne dans un contrôle d’édition enrichi en utilisant les messages EM_FINDTEXT ou EM_FINDTEXTEX , ou leurs équivalents Unicode, EM_FINDTEXTW et EM_FINDTEXTEXW. La structure FINDTEXT utilisée avec les versions non suivantes spécifie la plage de texte à rechercher et la chaîne à rechercher. Les versions étendues utilisent une structure FINDTEXTEX , qui spécifie les mêmes informations et reçoit également les points de début et de fin de la plage de caractères du texte trouvé. Vous pouvez également spécifier des options telles que si la recherche respecte la casse.

Bon à savoir

Technologies

Prérequis

  • C/C++
  • Programmation de l’interface utilisateur Windows

Instructions

Utiliser une opération de modification de texte enrichi

L’exemple de fonction suivant recherche le texte spécifié dans le texte sélectionné dans un contrôle d’édition enrichi qui prend en charge Unicode. Si la cible est trouvée, elle devient la nouvelle sélection.

BOOL FindTextInSelection(HWND hRich, WCHAR* target)
{
    CHARRANGE selectionRange;
    
    SendMessage(hRich, EM_EXGETSEL, 0, (LPARAM)&selectionRange);
    
    FINDTEXTEX ftex;
    
    ftex.lpstrText  = target;
    ftex.chrg.cpMin = selectionRange.cpMin;
    ftex.chrg.cpMax = selectionRange.cpMax;
    
    LRESULT lr = SendMessage(hRich, EM_FINDTEXTEXW, (WPARAM)FR_DOWN, (LPARAM) &ftex);
    
    if (lr >= 0)
    {
        LRESULT lr1 = SendMessage(hRich, EM_EXSETSEL, 0, (LPARAM)&ftex.chrgText);
        
        SendMessage(hRich, EM_HIDESELECTION, (LPARAM)FALSE, 0);
        
        return TRUE;
    }
    
    return FALSE;
    
}

Notes

Microsoft Rich Edit 3.0 prend également en charge la fonction HexToUnicode Input Method Editor (IME), qui permet à un utilisateur de convertir entre hexadécimal et Unicode à l’aide de touches d’accès rapide. Pour plus d’informations, consultez HexToUnicode IME.

Utilisation de contrôles d’édition enrichie

Démonstration des contrôles communs Windows (CppWindowsCommonControls)