2009-01-11 49 views
14

我想做一個處理用戶輸入的控件,所以我希望能夠處理不同的鍵盤,並且其中一種方法是使用IME。你如何使用IME?

如果您沒有處理它,當您有IME活動(例如日語寫入活動)時,會出現一個浮動窗口。我發現需要照顧的消息,但我不知道如何發送我陷入IME的密鑰,以及何時獲得有效的轉換字符。

回答

21

我是微軟SDE是用來維持(Windows和Office),一會兒韓文輸入法...

不幸的是最好的IME API文檔是由非微軟網站提供的:


這裏是Microsoft官方文檔:Input Method Manager (MSDN)

還有一種基於文本服務框架(TSF)的更先進的IME,Microsoft希望您使用它,但它更加複雜,並且舊API非常適用。如果您不需要任何高級功能(如通過平板電腦/語音識別/發燒友IME /等輸入),那麼使用舊的API就足夠了。

關於文字服務框架的最佳文檔是另一個微軟開發人員編寫的TSF Aware Blog。如果你走這條路,埃裏克布朗甚至會親自回答你的問題。

這裏是TSF微軟官方文檔:Text Services Framework (MSDN)

一個TSF的功能,你可能會發現有用的是抑制IME的渲染能力(需要爲需要渲染IME自己全屏幕遊戲,爲例)。只需告訴TSF,您的應用將呈現IME GUI,然後實現一個空的呈現方法:UILess Mode Overview (MSDN)

+0

很遺憾,前四個鏈接全部關閉。我無法在Chromium源文件中找到* ime_input.h/cc * - 它似乎將源文件分成多個文件。 – ComFreek 2014-01-25 18:23:21

0

我不認爲你想壓制IME顯示。我從來沒有使用除測試以外的其他功能,但我的理解是IME是使用英文鍵盤輸入非英文字符的預期/默認方式。

如果您正在編寫控件並希望完全支持IME,我認爲您擁有的兩個選項是響應各種Windows消息(如WM_IME_START_COMPOSITION,WM_IME_COMPOSITION等)或使用文本服務框架(TSF) )。我的理解是TSF是未來,而在Vista和Windows 7中,所有的IME代碼都是基於TSF的,Windows消息仍然存在,以便與舊程序兼容。