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


Структура IMESTRUCT (ime.h)

Используется SendIMEMessageEx для указания подфункции, выполняемой в сообщении редактора методов ввода (IME), и его параметров. Эта структура также используется для получения возвращаемых значений из этих подфункций.

Синтаксис

typedef struct tagIMESTRUCT {
  UINT   fnc;
  WPARAM wParam;
  UINT   wCount;
  UINT   dchSource;
  UINT   dchDest;
  LPARAM lParam1;
  LPARAM lParam2;
  LPARAM lParam3;
} IMESTRUCT, *PIMESTRUCT, *NPIMESTRUCT, *LPIMESTRUCT;

Члены

fnc

Подфункция. Одно из следующих значений.

IME_ENTERWORDREGISTERMODE

Используется для регистрации слов. Слова регистрируются как приложение отправляет слово и его чтение. Элементы структуры интерпретируются следующим образом:

Член Type Описание
lParam1 [Windows 3.1] LPARAM Слово низкого порядка задает дескриптор глобальной памяти, содержащий строку слова, заканчивающуюся на 0. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc .
lParam2 [Windows 3.1] LPARAM Слово нижнего порядка указывает дескриптор глобальной памяти, содержащий строку чтения, заканчивающуюся на 0. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc .
lParam3 [Windows 3.1] LPARAM Должен иметь значение NULL.
lParam1 [Windows NT] LPARAM Задает дескриптор глобальной памяти, содержащий строку слова, заканчивающуюся на 0. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc .
lParam2 [Windows NT] LPARAM Задает дескриптор глобальной памяти, содержащий строку чтения, заканчивающуюся на 0. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc .
lParam3 [Windows NT] LPARAM Используется для указания сведений о части речи. Так как такие сведения нельзя указать в текущей спецификации Windows, здесь задано значение NULL .
 

Возвращаемое значение указывает результат регистрации слов. ЗНАЧЕНИЕ TRUE , если регистрация была обработана в обычном режиме; в противном случае — FALSE.

Если требуется информация, например часть речи, должно появиться диалоговое окно с запросом на ввод данных. В элементах lParam1 и lParam2 может быть задано значение NULL; в этом случае в связанном поле записи диалогового окна ничего не должно отображаться.

IME_GETCONVERSIONMODE

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

Это то же самое, что и IME_GET_MODE.

Возвращает текущий режим преобразования IME в виде сочетания IME_MODE_ALPHANUMERIC для IME_MODE_NOCODEINPUT. Ниже перечислены режимы преобразования.

Режим преобразования Режим
IME_MODE_ALPHANUMERIC Буквенно-цифровой
IME_MODE_KATAKANA Катакана
IME_MODE_HIRAGANA Хирагана
IME_MODE_SBCSCHAR Однобайтовый символ
IME_MODE_DBCSCHAR Двухбайтовый символ
IME_MODE_ROMAN Римский характер
IME_MODE_NOROMAN Неримский символ
IME_MODE_CODEINPUT Входные данные кода
IME_MODE_NOCODEINPUT Входные данные, не относящиеся к коду
 

IME_GET_MODE

То же, что и IME_GETCONVERSIONMODE.

IME_MOVECONVERTWINDOW

То же, что и IME_SETCONVERSIONWINDOW.

IME_SETCONVERSIONFONTEX

Шрифт, используемый для отображения неопределенной строки, которая отображается в окне преобразования. Элементы структуры интерпретируются следующим образом:

Член Type Описание
lParam1 [Windows 3.1] LPARAM Слово низкого порядка указывает дескриптор глобальной памяти, содержащий структуру LOGFONT , задающую логический шрифт. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc . ЗНАЧЕНИЕ NULL указывает системный шрифт.
lParam1 [Windows NT] LPARAM Задает дескриптор глобальной памяти, содержащий структуру LOGFONT , задающую логический шрифт. Глобальная память — это блок памяти, выделенный путем указания флагов GMEM_MOVEABLE и GMEM_SHARE в функции GlobalAlloc . ЗНАЧЕНИЕ NULL указывает системный шрифт.
 

Эта подфункция не имеет возвращаемого значения.

Шрифт, заданный IME_SETCONVERSIONFONTEX , можно использовать только для отображения неопределенных строк.

Чтобы отобразить неопределенные строки в позиции по умолчанию, используйте системный шрифт. Если позиция отображения больше не является позицией по умолчанию, включите ранее указанный шрифт.

Глобальная память, содержащая структуру LOGFONT , освобождается приложением.

Если IME, отображающий окно преобразования, получает команду IME_SETCONVERSIONFONTEX и в результате обработки команды окно преобразования изменилось, IME должен отправить сообщение WM_IME_REPORT:IR_CHANGECONVERT. Это сообщение не должно отправляться, если шрифт, указанный IME_SETCONVERSIONFONTEX , совпадает с шрифтом, используемым редактором IME.

IME_SETCONVERSIONMODE

Задает режим преобразования IME. Элемент wParam задает одно или несколько следующих значений:

Значение Значение
IME_MODE_ALPHANUMERIC Режим преобразования буквенно-цифровых цифр. Это значение нельзя использовать с IME_MODE_KATAKANA или IME_MODE_HIRAGANA.
IME_MODE_KATAKANA Режим преобразования Катакана. Это значение нельзя использовать с IME_MODE_ALPHANUMERIC или IME_MODE_HIRAGANA.
IME_MODE_HIRAGANA Режим преобразования хираганы. Это значение нельзя использовать с IME_MODE_ALPHANUMERIC или IME_MODE_HIRAGANA.
IME_MODE_SBCSCHAR Режим преобразования однобайтовых символов. Этот параметр нельзя использовать с IME_MODE_DBCSCHAR.
IME_MODE_DBCSCHAR Режим преобразования двухбайтовых символов. Этот параметр нельзя использовать с IME_MODE_SBCSCHAR.
IME_MODE_ROMAN Римский режим преобразования символов. Этот параметр нельзя использовать с IME_MODE_NOROMAN.
IME_MODE_NOROMAN Нероманский режим преобразования символов. Этот параметр нельзя использовать с IME_MODE_ROMAN.
IME_MODE_CODEINPUT Режим преобразования входных данных кода. Этот параметр нельзя использовать с IME_MODE_NOCODEINPUT. Способ работы IME в режиме ввода кода зависит от конкретного IME.
IME_MODE_NOCODEINPUT Режим преобразования входных данных без кода. Этот параметр нельзя использовать с IME_MODE_CODEINPUT.
 

Возвращаемое значение указывает, был ли успешно настроен данный режим преобразования. Он возвращает состояние режима преобразования, действовав ранее, если был настроен новый режим преобразования. в противном случае — NULL.

IME_SETCONVERSIONWINDOW

Размер и положение ограничивающего прямоугольника для IME, а также начальное положение окна преобразования. IME отображает неопределенную строку в позиции, указанной этой подфункцией.

Элемент wParam задает одно из следующих значений:

Значение Значение
MCW_DEFAULT Отображает окно преобразования в позиции по умолчанию, которая обычно находится в нижней части экрана.

Если стиль MCW_DEFAULT указан в сообщении IME_SETCONVERSIONWINDOW, то, когда IME отображает или рисует окно преобразования в позиции по умолчанию, он не должен отправлять IR_OPENCONVERT, IR_CHANGECONVERT, IR_FULLCONVERT или IR_CLOSECONVERT сообщение.

MCW_WINDOW Отображает окно преобразования в координате, заданной в элементе lParam1 , в окне, указанном в параметре wParam WM_CONVERTREQUEST или WM_CONVERTREQUESTEX сообщения. Значение в lParam1 указывает координаты относительно верхнего левого угла окна, при этом слово нижнего порядка представляет координату X, а слово высокого порядка — координату Y. Ограничивающий прямоугольник является клиентским прямоугольником заданного окна и является наиболее типичным способом вызова преобразования кана в кандзи.

Если стиль MCW_WINDOW указан в сообщении IME_SETCONVERSIONWINDOW, IME должен отправить IR_OPENCOVERT сообщение, если состояние окна преобразования изменилось с закрытого на открытое. Если состояние окна преобразования изменилось с открытого на закрытое, IME должен отправить IR_CLOSECONVERT сообщение. Однако есть исключение. Дополнительные сведения см. в IME_WINDOWUPDATE.

MCW_WINDOW | MCW_RECT Аналогично MCW_WINDOW за исключением того, что ограничивающий прямоугольник задается элементами lParam2 и lParam3 . Элемент lParam2 указывает верхнюю левую точку, а lParam3 — нижнюю правую точку, каждый из которых имеет слово нижнего порядка, представляющее координату X, а слово высокого порядка — координату Y. Координаты находятся относительно верхней левой части окна.
MCW_SCREEN Отображает окно преобразования с верхним левым углом, обозначенным элементом lParam1 . Элемент lParam1 указывает абсолютные координаты с источником в левом верхнем углу экрана. Слово нижнего порядка представляет координату X, а слово высокого порядка — координату Y. Ограничивающий прямоугольник является полноэкранным.

Если стиль MCW_SCREEN указан в сообщении IME_SETCONVERSIONWINDOW, IME должен отправить IR_OPENCOVERT сообщение, если состояние окна преобразования изменилось с закрытого на открытое. Если состояние окна преобразования изменилось с открытого на закрытое, IME должен отправить IR_CLOSECONVERT сообщение. Однако есть исключение. Дополнительные сведения см. в IME_WINDOWUPDATE.

MCW_SCREEN | MCW_RECT Аналогично MCW_SCREEN за исключением того, что ограничивающий прямоугольник задается элементами lParam2 и lParam3 . Элемент lParam2 указывает верхнюю левую точку, а lParam3 — нижнюю правую точку, каждый из которых имеет слово нижнего порядка, представляющее координату X, а слово высокого порядка — координату Y. Координаты являются абсолютными координатами с источником в левом верхнем углу экрана.
MCW_HIDDEN [Windows 3.1] Если этот флаг указан, IME не отображает окно преобразования. Вместо этого само приложение отображает неопределенные строки. Элемент lParam1 указывает координаты позиции курсора, отображаемой приложением или точкой интереса. Элементы lParam2 и lParam3 указывают регион, в котором IME не включает отображение. IME, который отображает определенные строковые кандидаты во всплывающем окне, может использовать эти фрагменты информации, чтобы определить, где будет отображаться окно определенных строк-кандидатов. Окно для отображения потенциальных строк считается системным окном. Таким образом, IME зависит от того, следует ли отображать такое окно, где и как его отображать, а также какие ввод с клавиатуры использовать. Три элемента lParam1, lParam2 и lParam3 указывают абсолютные координаты в верхней левой части экрана, каждый из которых содержит слово нижнего порядка, представляющее координату X, а слово высокого порядка — координату Y.

Если указан флаг MCW_HIDDEN, IME отправляет IR_UNDETERMINE сообщение с запросом на отображение в приложении неопределенной строки. Само приложение отображает неопределенную строку, содержащуюся в этом сообщении.

После указания флага MCW_HIDDEN IME не отправляет IR_OPENCONVERT, IR_CHANGECONVERT или IR_CLOSECONVERT сообщение.

Если приложение указывает MCW_HIDDEN и в то же время запрашивает прямоугольник, слишком большой для отображения окна-кандидата для определенной строки, это должно рассматриваться как ошибка. Код ошибки должен быть IME_RD_TOOLONG.

Если стиль MCW_HIDDEN указан в сообщении IME_SETCONVERSIONWINDOW, IME никогда не должен отправлять IR_OPENCONVERT, IR_CHANGECONVERT, IR_FULLCONVERT или IR_CLOSECONVERT.

MCW_VERTICAL Сообщает IME, что приложение отображает строки символов в вертикальном формате записи. Если этот флаг указан, окно преобразования отображается для вертикальной записи, а позиция, обозначенная элементом lParam1 , находится в правом верхнем углу. Этот флаг можно указать с помощью MCW_WINDOW, MCW_WINDOW|MCW_RECT, MCW_SCREEN или MCW_SCREEN|MCW_RECT. IME должен поддерживать MCW_VERTICAL. Если указан MCW_VERTICAL и выбранный шрифт не предназначен для вертикальной записи, IME использует шрифт вертикальной записи по умолчанию. Этот шрифт по умолчанию создается следующим образом:
  1. Сведения о шрифте извлекаются в структуре LOGFONT функцией GetObject с помощью дескриптора шрифта SYSTEM_FONT.
  2. Шрифт создается путем добавления амперсанда (@) в начало имени лица и установки escapement и ориентации на 270 градусов.
 

Возвращаемое значение указывает, была ли выполнена команда. Значение TRUE , если команда выполнена успешно; в противном случае — FALSE.

Если кажется, что неопределенная строка переполняет ограничивающий прямоугольник, IME должен выдать приложению сообщение отчета WM_IME_REPORT:IR_FULLCONVERT перед отображением этой строки. Если приложение не обрабатывает это сообщение, последующая обработка для отображения не формулируется в этой спецификации, но она остается в IME. Например, неопределенная строка может быть прокручена в ограничивающем прямоугольнике или временно перемещена в положение по умолчанию.

Если сообщение IME_SETCONVERSIONWINDOW вызывается, когда IME содержит неопределенную строку, IME должен выдать сообщение WM_IME_REPORT:IR_CLOSECONVERT; Если строка помещается в окно, заданное в качестве параметра, IME должен выдать сообщение WM_IME_REPORT:IR_OPENCONVERT. Только после этого должно быть отрисовано окно преобразования. Если строка не помещается в окне, IME должен выдать сообщение WM_IME_REPORT:IR_FULLCONVERT.

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

Не рекомендуется задавать максимальное количество строк окна преобразования или максимальное число символов, отображаемых в окне преобразования.

Если окно преобразования перекрывает системное окно, окно преобразования должно быть видимым. Например, окно преобразования может иметь верхний приоритет для отображения или системное окно можно переместить в другое место.

IME должен отправить IR_CHANGECONVERT сообщение, если окно преобразования изменилось по размеру, отображаемого содержимого или цвету отображения. Однако если неопределенная строка не помещается в указанное окно, редактор IME должен отправить IR_FULLCONVERT сообщение, а не IR_CHANGECONVERT.

Когда IME переключился из режима MCW_WINDOW или MCW_SCREEN на MCW_DEFAULT, он должен отправить IR_CLOSECONVERT сообщение, если существует неопределенная строка.

Если IME переключился из режима MCW_WINDOW или MCW_SCREEN на MCW_HIDDEN, он должен отправить сообщение IR_CLOSECONVERT, если существует неопределенная строка.

Когда IME переключился из режима MCW_HIDDEN на MCW_DEFAULT, MCW_SCREEN или MCW_WINDOW, IME должен передать IR_UNDETERMINE сообщение с неопределенной строкой = 0 и определенной строкой = 0.

IME_SETLEVEL

Подфункция для корейского языка, которая задает уровень IME для текущего приложения. Член wParam принимает одно из следующих значений уровня.

Level Значение
1 IME не поддерживается. Все сообщения, относящиеся к IME, игнорируются.
2 Частичная поддержка IME. Поддерживает подмножество поведения IME, включая положение окон композиции или кандидатов, а также режим ввода или состояние.
3 Полная поддержка IME.
 

IME_SETOPEN

Задает состояние функции преобразования "кана в кандзи" в редакторе IME.

Для элемента wParam задано ненулевое значение, чтобы открыть IME, и нулевое значение, чтобы закрыть IME.

Возвращаемое значение указывает предыдущее состояние функции преобразования кана в кандзи. Возвращает значение TRUE , если открыто; в противном случае — FALSE.

Неопределенная строка не должна определяться, если функция преобразования кана в кандзи была закрыта IME_SETOPEN.

Когда функция преобразования кана в кандзи должна быть закрыта IME_SETOPEN, IME должен отправить IR_CLOSECONVERT сообщение, если IME находится в режиме MCW_WINDOW или MCW-SCREEN и если окно преобразования открыто. Однако IME не должен выдавать IR_CLOSECONVERT, если он находится в режиме MCW_HIDDEN и если существует неопределенная строка.

IME_SET_MODEK

Версия IME_SETCONVERSIONMODE для корейского языка.

wParam

Использование зависит от подфункции, указанной в fnc.

wCount

Использование зависит от подфункции, указанной в fnc.

dchSource

Использование зависит от подфункции, указанной в fnc.

dchDest

Использование зависит от подфункции, указанной в fnc.

lParam1

Использование зависит от подфункции, указанной в fnc.

lParam2

Использование зависит от подфункции, указанной в fnc.

lParam3

Использование зависит от подфункции, указанной в fnc.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть ime.h

См. также раздел

Буфер обмена

Основные понятия

Справочные материалы

SetClipboardData