Как использовать операции редактирования форматированного текста
Приложение может отправлять сообщения для получения или поиска текста в элементе управления расширенными возможностями редактирования. Вы можете получить выбранный текст или указанный диапазон текста.
Чтобы получить выделенный текст в элементе управления расширенными изменениями, используйте сообщение 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.
Связанные разделы