Как взаимодействовать с текущим выделением
Пользователь может выбрать текст в элементе управления расширенными изменениями с помощью мыши или клавиатуры. Текующее выделение является диапазоном выбранных символов или местоположением точки вставки, если символы не выбраны. Приложение может получить сведения о текущем выделении, задать его, определить, когда оно изменяется, и показать или скрыть выделение.
Что нужно знать
Технологии
Необходимые условия
- C/C++
- Программирование пользовательского интерфейса Windows
Инструкции
Взаимодействие с текущим выделением
Чтобы определить текущий выбор в элементе управления расширенными изменениями, используйте сообщение EM_EXGETSEL. Чтобы задать текущий выбор, используйте сообщение EM_EXSETSEL. Структура CHARRANGE используется как с сообщениями, так и задает диапазон символов. Чтобы получить сведения о содержимом текущего выбора, можно использовать сообщение EM_SELECTIONTYPE.
Приложение может определить, когда текущая выборка изменяется, обрабатывая код оповещения EN_SELCHANGE. Код уведомления указывает структуру SELCHANGE, содержащую сведения о новом выборе. Элемент управления расширенными изменениями отправляет этот код уведомления только в том случае, если вы включите его с помощью сообщения EM_SETEVENTMASK.
По умолчанию элемент управления расширенными изменениями отображает и скрывает выделение выделения при его получении и потере фокуса. Вы можете в любое время отобразить или скрыть выделение с помощью сообщения EM_HIDESELECTION. Например, приложение может предоставить диалоговое окно поиска для поиска текста в элементе управления расширенными изменениями. Приложение может выбрать соответствующий текст, не закрывая диалоговое окно, в этом случае оно должно использовать сообщение EM_HIDESELECTION для подсветки выделения.
Как и в случае с элементами управления редактированием, можно указать стиль окна ES_NOHIDESEL, чтобы предотвратить скрытие выделенного фрагмента при потере фокуса.
В качестве альтернативы использованию EM_EXGETSEL и EM_EXSETSEL сообщений можно получить и задать текущий выбор с помощью EM_GETSEL и EM_SETSEL редактирования сообщений управления. EM_GETSEL сообщение упаковывает два 16-разрядных индекса символов в 32-разрядное возвращаемое значение и поэтому работает только для выделений, которые полностью помещаются в первые 64K. Однако элемент управления расширенными изменениями никогда не будет содержать более 32K символов текста, если вы не расширяете это ограничение с помощью EM_LIMITTEXT или сообщения EM_EXLIMITTEXT. Для выделений, которые превышают первые 64 КБ текста, сообщение EM_GETSEL возвращает –1. В таком случае можно по-прежнему использовать значения, возвращаемые в wParam и lParam для поиска начальных и конечных символов выделения.
Связанные разделы
-
Использование расширенных элементов управления редактированием
-
демонстрация стандартных элементов управления Windows (CppWindowsCommonControls)