Поделиться через


Как использовать операции редактирования форматированного текста

Приложение может отправлять сообщения для получения или поиска текста в элементе управления расширенными возможностями редактирования. Вы можете получить выбранный текст или указанный диапазон текста.

Чтобы получить выделенный текст в элементе управления расширенными изменениями, используйте сообщение EM_GETSELTEXT. Текст копируется в указанный массив символов. Необходимо убедиться, что массив достаточно велик, чтобы сохранить выделенный текст, а также завершающий символ NULL.

Чтобы получить указанный диапазон текста, используйте сообщение EM_GETTEXTRANGE. Структура TEXTRANGE, используемая с этим сообщением, указывает диапазон текста для извлечения и указания массива символов, получающего текст. В этом случае приложение должно убедиться, что массив достаточно велик для указанного текста, а также завершающего символа NULL.

Вы можете искать строку в элементе управления Rich Edit с помощью сообщений EM_FINDTEXT или EM_FINDTEXTEX, или их эквивалентов для Юникода, EM_FINDTEXTW и EM_FINDTEXTEXW. Структура FINDTEXT, используемая с нерастендированными версиями, указывает диапазон текста для поиска и строку для поиска. Расширенные версии используют структуру FINDTEXTEX, которая задает ту же информацию, а также получает начальные и конечные точки диапазона символов найденного текста. Можно также указать такие параметры, как учет чувствительности к регистру и другие варианты поиска.

Что нужно знать

Технологии

Необходимые условия

  • C/C++
  • Программирование пользовательского интерфейса Windows

Инструкции

Использование операции "Редактирование форматированного текста"

В следующем примере функция находит указанный текст в выделенном тексте в элементе управления расширенными изменениями, поддерживающем Юникод. Если целевой объект найден, он становится новым выбором.

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;
    
}

Замечания

Microsoft Rich Edit 3.0 также поддерживает функцию редактора методов ввода HexToUnicode (IME), которая позволяет пользователю преобразовывать между шестнадцатеричными и Юникодами с помощью горячих ключей. Для получения дополнительной информации см. HexToUnicode IME.

Использование элементов управления Rich Edit

демонстрация общих элементов управления в Windows (CppWindowsCommonControls)