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


Как взаимодействовать с текущим выделением

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

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

Технологии

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

  • 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)