入力コンテキスト
"入力コンテキスト" は、IMM によって管理される内部構造です。 IME の状態に関する情報が含まれており、IME ウィンドウで使用されます。 既定では、オペレーティング システムは入力コンテキストを作成し、各スレッドに割り当てます。 スレッド内では、この既定の入力コンテキストは共有リソースであり、新しく作成された各ウィンドウに関連付けられます。
IME で情報を取得または設定するには、IME 対応アプリケーションが最初に、指定されたウィンドウに関連付けられている入力コンテキストへのハンドルを取得する必要があります。 アプリケーションは 、ImmGetContext 関数を使用してハンドルを取得します。 取得したハンドルを IMM 関数の後続の呼び出しで使用して、コンポジション ウィンドウ スタイル、コンポジション スタイル、ステータス ウィンドウの位置などの IME 値を取得および設定できます。 コンテキストの使用が完了したら、 ImmReleaseContext 関数を使用してコンテキストを解放する必要があります。
既定の入力コンテキストは共有リソースであるため、アプリケーションによって行われる変更は、スレッド内のすべてのウィンドウに適用されます。 ただし、アプリケーションは、独自の入力コンテキストを作成し、それをスレッドの 1 つ以上のウィンドウに関連付けることで、この既定の動作をオーバーライドできます。 アプリケーション固有の入力コンテキストに加えられた変更は、コンテキストに関連付けられているウィンドウにのみ適用されます。
アプリケーションでは、 ImmCreateContext 関数を使用して入力コンテキストを作成できます。 ウィンドウにコンテキストを割り当てるために、アプリケーションは ImmAssociateContext 関数を呼び出します。 この関数は、以前に関連付けられた入力コンテキストへのハンドルを返します。 アプリケーションが入力コンテキストをウィンドウにまだ関連付けられていない場合、返されるハンドルは既定の入力コンテキスト用です。 通常、アプリケーションはこのハンドルを保存し、後でカスタマイズされた入力コンテキストが不要になったときにウィンドウと再関連付けします。
入力コンテキストがウィンドウに関連付けられると、オペレーティング システムは、ウィンドウがアクティブ化され、入力フォーカスを受け取ると、そのコンテキストを自動的に選択します。 入力コンテキストのスタイルやその他の情報は、そのウィンドウの後続のキーボード入力に影響し、IME の動作方法を決定します。
アプリケーションは、終了する前に、カスタマイズされた入力コンテキストを破棄する必要があります。 最初に、アプリケーションは ImmAssociateContext 関数を使用して、スレッド内のウィンドウに対して行った関連付けから入力コンテキストを削除します。 次に、 ImmDestroyContext 関数を 呼び出します。
関連トピック