Строка композиции
Строка композиции — это текущий текст в окне композиции. Это текст, который IME преобразует в окончательные символы. Каждая строка композиции состоит из одного или нескольких предложений. Предложение — это наименьшее сочетание символов, которое редактор метода ввода (IME) может преобразовать в финальный символ. Чтобы получить и задать строку композиции, приложение вызывает функции ImmGetCompositionString и ImmSetCompositionString соответственно.
Когда пользователь вводит текст в окне композиции, IME отслеживает состояние строки композиции. Это состояние включает сведения об атрибутах, сведения о фразах, информацию о вводе и положение курсора. Приложение может получить состояние композиции с помощью функции ImmGetCompositionString.
Сведения о атрибутах отображаются в массиве 8-разрядных значений, указывающих состояние символов в строке композиции. Все символы одного предложения должны иметь один и тот же атрибут. Массив содержит одно значение для каждого байта в строке, включая начальный и второй байты всех двухбайтовых символов в строке. Для каждого значения в массиве биты от 0 до 3 могут быть одним сочетанием следующих значений.
Ценность | Значение |
---|---|
ATTR_INPUT | Символ, введенный пользователем. IME еще не преобразовывает этот символ. |
ОШИБКА_ВВОДА_ATTR | Символ ошибки, который не может преобразовать IME. Например, IME не может объединить некоторые консонанты. |
ЦЕЛЕВОЕ_ЗНАЧЕНИЕ_ПРЕОБРАЗОВАНО | Символ, выбранный пользователем, а затем преобразованный IME. |
Преобразованный_атрибут | Символ, который IME уже преобразовал. |
ATTR_TARGET_NOTCONVERTED | Преобразуемый объект. Пользователь выбрал этот символ, но IME еще не преобразовал его. |
ПРИЗНАК_ИСПРАВЛЕНО | Символы, которые IME больше не преобразует. |
Все остальные значения зарезервированы. На японском языке любой непреобразованный символ, имеющий атрибут ATTR_INPUT, является хираганой, катаканой или буквенно-цифровыми символами. В корейском языке этот атрибут представляет символ Hangul, который IME еще не преобразован. В традиционном китайском и упрощенном китайском языке каждый IME может ограничить свой символ в определенном диапазоне.
Сведения о предложении, включенные в состояние строки композиции, — это массив 32-разрядных значений, указывающих позиции предложений в строке композиции. Массив содержит одно значение для каждого предложения и окончательное значение, указывающее длину полной строки. Каждое значение в массиве задает смещение (в байтах) с начала строки до предложения. Первое значение всегда равно 0, так как первое предложение всегда начинается в начале строки. Например, если строка содержит два предложения, сведения о предложении имеют три значения: первое значение равно 0, второе — смещение второго предложения, а третье значение — длина строки. Для Юникода позиция предложения учитывается в символах Юникода, а длина строки — это размер символов Юникода.
Сведения о вводе, включенные в состояние строки композиции, — это строка символов с завершающим нулевым символом, представляющая символы, которые пользователь вводит на клавиатуре.
Позиция курсора, включенная в состояние строки композиции, — это значение, указывающее положение курсора относительно символов в строке композиции. Значением является смещение в байтах с начала строки. Если это значение равно 0, курсор находится непосредственно перед первым символом в строке. Если значение совпадает с длиной строки, курсор немедленно переместится за последний символ. Если значение равно 1, курсор отсутствует. Для Юникода и позиция, и длина измеряются в символах Юникода.
Приложение может задать строку композиции или элементы состояния композиции с помощью функции ImmSetCompositionString. Чтобы убедиться, что окно композиции обновляет его внешний вид на основе этих изменений, функция позволяет приложению отправлять уведомление в окно. Приложения, которые задают сочетание элементов состояния композиции, обычно отключают уведомления для всех, кроме последнего вызова этой функции, чтобы создать только одно сообщение уведомления для окна композиции.
Наконец, элемент управления редактированием поддерживает два сообщения для изменения обработки строк композиции с помощью IME. Дополнительные сведения см. в разделе EM_GETIMESTATUS и EM_SETIMESTATUS. Дополнительные сведения об элементе управления редактированием см. в разделе Edit Control.
Связанные разделы