Использование операций с форматированными изменениями текста
Приложение может отправлять сообщения для получения или поиска текста в элементе управления расширенными возможностями редактирования. Вы можете получить выбранный текст или указанный диапазон текста.
Чтобы получить выделенный текст в элементе управления расширенными изменениями, используйте сообщение EM_GETSELTEXT . Текст копируется в указанный массив символов. Необходимо убедиться, что массив достаточно велик, чтобы сохранить выделенный текст, а также завершающий символ NULL.
Чтобы получить указанный диапазон текста, используйте сообщение EM_GETTEXTRANGE . Структура TEXTRANGE , используемая с этим сообщением, указывает диапазон текста для извлечения и указания на массив символов, получающий текст. В этом случае приложение должно убедиться, что массив достаточно велик для указанного текста, а также завершающего символа NULL.
Вы можете искать строку в элементе управления расширенными изменениями с помощью EM_FINDTEXT или EM_FINDTEXTEX сообщений или их эквивалентов Юникода, EM_FINDTEXTW и EM_FINDTEXTEXW. Структура FINDTEXT , используемая с нерастендированными версиями, указывает текстовый диапазон для поиска и строки для поиска. Расширенные версии используют структуру FINDTEXTEX , которая задает те же сведения, а также получает начальные и конечные точки диапазона символов найденного текста. Можно также указать такие параметры, как учет регистра поиска.
Это важно знать
Технологии
Необходимые компоненты
- C/C++
- Программирование пользовательского интерфейса Windows
Instructions
Использование операции "Форматированный текст"
В следующем примере функция находит указанный текст в выделенном тексте в элементе управления расширенными изменениями, поддерживающем Юникод. Если целевой объект найден, он становится новым выбором.
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.
См. также