18

ユーザー入力を処理するコントロールを作成したいので、さまざまなキーボードを処理できるようにしたいのですが、その方法の 1 つは IME を使用することです。

それを処理しない場合、IME がアクティブなときに表示されるフローティング ウィンドウがあります (たとえば、日本語の書き込みがアクティブな場合)。処理が必要なメッセージは見つかりましたが、トラップしているキーを IME に送信する方法と、有効な変換された文字をいつ取得するかがわかりません。

4

2 に答える 2

28

私は、(Windows および Office) 韓国語 IME をしばらく維持していた Microsoft SDE です...

残念ながら、最適な IME API ドキュメントは、Microsoft 以外のサイトで提供されています。


Microsoft の公式ドキュメントは次のとおりです。Input Method Manager (MSDN)

Microsoft が使用することを望んでいるテキスト サービス フレームワーク (TSF) に基づく新しい、より高度な IME もありますが、これはさらに複雑で、古い API はかなりうまくエミュレートされています。高度な機能 (タブレット経由の入力、音声認識、より高度な IME など) が必要ない場合は、古い API を使用するだけで十分です。

テキスト サービス フレームワークに関する最良のドキュメントは、別の Microsoft 開発者によって書かれたTSF Aware ブログです。このルートをたどると、Eric Brown が個人的にあなたの質問に答えるかもしれません。

TSF に関する Microsoft の公式ドキュメントは次のとおりです。Text Services Framework (MSDN)

TSF の便利な機能の 1 つは、IME のレンダリングを抑制する機能です (たとえば、IME 自体をレンダリングする必要があるフルスクリーン ゲームに必要です)。アプリが IME GUI をレンダリングすることを TSF に伝えてから、空のレンダリング メソッドを実装するだけです: UI レス モードの概要 (MSDN)

于 2009-08-08T21:54:29.553 に答える
0

IME の表示を抑制したいとは思いません。テスト以外で使用したことはありませんが、英語キーボードを使用して英語以外の文字を入力する場合、IME が期待される/デフォルトの方法であることを理解しています。

コントロールを作成していて、IME を完全にサポートしたい場合、さまざまな Windows メッセージ (WM_IME_START_COMPOSITION、WM_IME_COMPOSITION など) に応答するか、テキスト サービス フレームワーク (TSF) を使用するという 2 つのオプションがあると思います。TSF は将来のものであり、Vista と Windows 7 ではすべての IME コードが TSF に基づいており、Windows メッセージは古いプログラムとの互換性のために残っていると私は理解しています。

于 2009-01-11T23:55:14.073 に答える