Eingabekontext

Ein "Eingabekontext" ist eine interne Struktur, die vom IMM verwaltet wird. Sie enthält Informationen über die status der IME und wird von IME-Fenstern verwendet. Standardmäßig erstellt und weist das Betriebssystem jedem Thread einen Eingabekontext zu. Innerhalb des Threads ist dieser Standardeingabekontext eine freigegebene Ressource und jedem neu erstellten Fenster zugeordnet.

Zum Abrufen oder Festlegen von Informationen im IME muss eine IME-fähige Anwendung zuerst ein Handle für den Eingabekontext abrufen, der einem angegebenen Fenster zugeordnet ist. Die Anwendung ruft das Handle mithilfe der Funktion ImmGetContext ab. Es kann den abgerufenen Handle in nachfolgenden Aufrufen der IMM-Funktionen verwenden, um IME-Werte abzurufen und festzulegen, z. B. die Kompositionsfensterstile, die Kompositionsart und die status Fensterposition. Sobald die Anwendung den Kontext verwendet hat, muss sie den Kontext mithilfe der Funktion ImmReleaseContext freigeben.

Da der Standardeingabekontext eine freigegebene Ressource ist, gelten alle Änderungen, die die Anwendung daran vornimmt, auf alle Fenster im Thread. Die Anwendung kann dieses Standardverhalten jedoch überschreiben, indem sie einen eigenen Eingabekontext erstellt und einem oder mehreren Fenstern des Threads zugeordnet wird. Die Änderungen an einem anwendungsspezifischen Eingabekontext gelten nur für die dem Kontext zugeordneten Fenster.

Ihre Anwendung kann mithilfe der Funktion ImmCreateContext einen Eingabekontext erstellen. Um einem Fenster den Kontext zuzuweisen, ruft die Anwendung die Funktion ImmAssociateContext auf. Diese Funktion gibt ein Handle an den zuvor zugeordneten Eingabekontext zurück. Wenn die Anwendung dem Fenster noch keinen Eingabekontext zugeordnet hat, ist das zurückgegebene Handle für den Standardeingabekontext. In der Regel speichert die Anwendung dieses Handle und ordnet es später dem Fenster wieder zu, wenn der angepasste Eingabekontext nicht mehr benötigt wird.

Sobald ein Eingabekontext einem Fenster zugeordnet ist, wählt das Betriebssystem diesen Kontext automatisch aus, wenn das Fenster aktiviert ist und den Eingabefokus empfängt. Der Stil und andere Informationen im Eingabekontext wirken sich auf die nachfolgende Tastatureingabe für dieses Fenster aus, sodass die Funktionsweise des IME bestimmt wird.

Ihre Anwendung muss jeden benutzerdefinierten Eingabekontext zerstören, bevor sie beendet wird. Zunächst entfernt die Anwendung den Eingabekontext aus jeder Zuordnung, die sie mit Fenstern im Thread erstellt hat, indem sie die Funktion ImmAssociateContext verwendet. Anschließend wird die Funktion ImmDestroyContext aufgerufen.

Informationen zum Eingabemethoden-Manager