как вы используете IME? - PullRequest
       21

как вы используете IME?

14 голосов
/ 12 января 2009

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

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

Ответы [ 2 ]

25 голосов
/ 09 августа 2009

Я - Microsoft SDE, которая некоторое время поддерживала корейский IME (для Windows и Office) ...

К сожалению, лучшая документация по IME API предоставляется сайтами других компаний:


Вот официальная документация Microsoft: Менеджер методов ввода (MSDN)

Существует также новый, более продвинутый IME, основанный на Text Services Framework (TSF), который Microsoft предпочел бы использовать, но он еще более сложный, и старый API эмулируется довольно хорошо. Если вам не нужны какие-либо расширенные функции (например, ввод с помощью планшета / распознавания голоса / модного IME / и т. Д.), Достаточно использовать старый API.

Лучшей документацией по Text Services Framework является TSF Aware Blog , написанный другим разработчиком Microsoft. Эрик Браун может даже лично ответить на ваши вопросы, если вы пойдете этим путем.

Вот официальная документация Microsoft для TSF: Text Services Framework (MSDN)

Одна функция TSF, которую вы можете найти полезной, - это возможность подавить рендеринг IME (необходим для полноэкранных игр, которые, например, должны сами рендерить IME). Просто скажите TSF, что ваше приложение будет отображать графический интерфейс IME, а затем реализуйте пустой метод рендеринга: Обзор режима UILess (MSDN)

0 голосов
/ 12 января 2009

Не думаю, что вы хотите отключить IME от отображения. Я никогда не использовал ничего, кроме как для тестирования, но, насколько я понимаю, IME - это ожидаемый / используемый по умолчанию способ ввода неанглийских символов с помощью английской клавиатуры.

Если вы пишете элемент управления и хотите полностью поддерживать IME, я думаю, что у вас есть два варианта: отвечать на различные сообщения Windows (например, WM_IME_START_COMPOSITION, WM_IME_COMPOSITION и т. Д.) Или использовать Text Services Framework (TSF). , Насколько я понимаю, будущее за TSF, а в Vista и Windows 7 весь код IME основан на TSF, а сообщения Windows все еще там для совместимости со старыми программами.

...