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


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

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

Это важно знать

Технологии

Необходимые компоненты

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

Instructions

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

Чтобы определить текущий выбор в элементе управления расширенными изменениями, используйте сообщение 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)