Как использовать информацию о разрывах в Microsoft Word и строках
Элемент управления расширенными изменениями вызывает функцию, называемую процедурой разбиения слов, чтобы найти разрывы между словами и определить, где она может разбить линии. Элемент управления использует эту информацию при выполнении операций переноса слов и при обработке сочетаний клавиш CTRL+СТРЕЛКА ВЛЕВО и CTRL+СТРЕЛКА ВПРАВО. Приложение может отправлять сообщения в элемент управления расширенными изменениями, чтобы заменить процедуру разбиения слов по умолчанию, получить сведения о разрыве слов и определить, на какую строку попадает заданный символ.
Что нужно знать
Технологии
Необходимые условия
- C/C++
- Программирование пользовательского интерфейса Windows
Инструкции
Использование информации о разрывах слов и строк
Процедуры разбиения слов для элементов управления расширенными изменениями похожи на те, которые предназначены для элементов управления редактированием, но они имеют дополнительные возможности: процедуры разбиения слов для обоих видов элементов управления могут определить, является ли символ разделителем и может найти ближайший разрыв слов до или после указанной позиции. Разделитель — это символ, обозначающий конец слова, например пробел. Как правило, в элементе управления редактированием разрыв слов происходит только после разделителей. Однако различные правила применяются к большинству азиатских языков.
Процедуры разбиения слов для элементов управления расширенными текстами также группируют символы в классы символов, каждый из которых определяется значением в диапазоне от 0x00 до 0x0F. Разрывы происходят либо после разделителей, либо между символами разных классов. Таким образом, процедура разбиения слов с различными классами для буквенно-цифровых символов и знаков препинания находит два разрывов слов в строке "Win.doc" (до и после периода).
Класс символа можно объединить с нулевыми или более флагами разбиения слов для формирования 8-разрядного значения. При выполнении операций переноса по словам элемент расширенного редактирования использует флаги разрыва строк, чтобы определить, где можно прерывать строки. Rich Edit использует следующие флаги разбиения слов.
Флаг | Описание |
---|---|
WBF_BREAKAFTER | Строки могут быть разбиты после символа. |
WBF_BREAKLINE | Символ — это разделитель. Разделители помечают концы слов. Строки могут быть разбиты после разделителей. |
WBF_ISWHITE | Символ является символом пробела. Конечные пробелы не включаются в длину строки при переносе строк. |
Значение WBF_BREAKAFTER разрешает перенос строки после символа, который не обозначает конец слова, например, дефис.
Вы можете заменить процедуру word-break по умолчанию для элемента управления расширенными изменениями с помощью EM_SETWORDBREAKPROC сообщения. Дополнительные сведения о процедурах разбиения слов см. в описании функции EditWordBreakProc.
Заметка
Эта замена не рекомендуется для Microsoft Rich Edit 2.0 и более поздних версий из-за сложности разбиения многоязычных слов.
Для Microsoft Rich Edit 1.0 можно использовать сообщение EM_SETWORDBREAKPROCEX для замены расширенной процедуры разбиения слов по умолчанию с помощью функции EditWordBreakProcEx. Эта функция предоставляет дополнительные сведения о тексте, например набор символов. Вы можете использовать сообщение EM_GETWORDBREAKPROCEX для получения адреса текущей расширенной процедуры разбиения слов. Обратите внимание, что Microsoft Rich Edit 2.0 и более поздних версий не поддерживает EditWordBreakProcEx, EM_GETWORDBREAKPROCEXи EM_SETWORDBREAKPROCEX.
Вы можете использовать сообщение EM_FINDWORDBREAK для поиска разрывов слов или определения классов символов и флагов разбиения слов. В свою очередь, элемент управления вызывает процедуру разбиения слов, чтобы получить запрошенную информацию.
Чтобы определить, на какую строку попадает заданный символ, можно использовать сообщение EM_EXLINEFROMCHAR.
Связанные разделы
-
Элементы управления с расширенными возможностями редактирования
-
демонстрация стандартных элементов управления Windows (CppWindowsCommonControls)