Freigeben über


Übersicht über den UILess-Modus

Erstellen von UILessMode

Erstellen eines Threads ohne Benutzeroberfläche: Die Anwendung kann einen Thread ohne Benutzeroberfläche durch ITfThreadMgrEx::ActivateEx mit ITF_AE_UIELEMENTENABLEDONLY erstellen. Wenn ThreadMgr mit dieser Kennzeichnung aktiviert wird, werden im Thread nur TIPs aktiviert, die sein UI-Element steuern können. Die Anwendung muss die ITfUIElementSink-Schnittstelle implementieren und die Schnittstelle im Thread-Manager angeben. ITfUIElementSink::BeginUIElement wird aufgerufen, wenn die TIP ihre Benutzeroberfläche anzeigt. Die Anwendung kann TRUE im pbShow-Parameter zurückgeben, damit die TIP die ursprüngliche Benutzeroberfläche der TIP anzeigen kann, wenn die Anwendung nicht zeichnen möchte. Wenn die Benutzeroberfläche der TIP von der Anwendung nicht zugelassen wird, kann sie FALSE in pbShow zurückgeben (siehe Diagramme unten). Die Anwendung kann die Benutzeroberfläche selbst zeichnen, indem sie einige Informationen aus dem pElement-Parameter abruft. Es kann sich um die Kandidatenliste, das Sprachleistenelement oder die benutzerdefinierte Benutzeroberfläche der TIP handeln. Die Anwendung kann die Art der Benutzeroberfläche durch die QIing ITfUIElement-Schnittstelle erkennen. Wenn die Benutzeroberfläche geändert wird, wird ITfUIElementSink::UpdateUIElement aufgerufen. Die Anwendung kann die GUID von pElement->GetGUID() vergleichen, um zu wissen, ob das Element derzeit von der Anwendung gezeichnet wird.

TIP mit Unterstützung des UI-losen Modus erstellen: Die TIP sollte den UI-losen Modus unterstützen, wenn sie unter einer Anwendung ausgeführt werden soll, die die UI der TIP nicht zulassen soll, wie etwa Spieleanwendungen oder Vollbildanwendungen. Hierzu muss die TIP die ITfTextInputProcessorEx-Schnittstelle implementieren. Wenn diese Schnittstelle nicht implementiert ist, wird die TIP im UI-losen Modus-Thread nicht aktiviert. Außerdem muss die TIP ITFUIElementMgr::BeginUIElement aufrufen, bevor sie eine sichtbare Benutzeroberfläche auf dem Bildschirm anzeigt. Diese Methode ruft ITfUIElementSink auf, um die Anwendung zu benachrichtigen. Und die Anwendung entscheidet, ob sie angezeigt werden kann oder nicht. Wenn die TIP BeginUIElement() aufruft, muss die TIP über die ITfUIElement-Schnittstelle für die entsprechende Benutzeroberfläche verfügen. Die Anwendung stattet die Schnittstelle mit QI aus, um eine andere UI-spezifische Schnittstelle zu erhalten und so weitere Informationen zum Zeichnen der UI abzurufen. Das System definiert vorab ITfCandidateListUIElement und ITfReadingInformationUIElement für die TIP. Wenn die TIP die Kandidatenliste in einem UI-losen Modus-Thread anzeigen möchte, muss die TIP eine Instanz der ITfCandidateListUIElement-Schnittstelle erstellen und ITFUIElementMgr::BeginUIElement aufrufen. Wenn ITfTextInputProcessorEx::ActivateEx aufgerufen wird, weiß die TIP bereits, dass es sich um einen UI-losen Thread handelt, sodass die zusätzliche benutzerdefinierte Benutzeroberfläche entfernt werden kann. Sie kann jedoch natürlich eine eigene Schnittstelle implementieren, von der aus eine QI-Operation ausgeführt werden kann, um zu versuchen, eine Benachrichtigung zu erstellen. Daher können die TIP und die Anwendung ITfUIElement eine Aushandlung für die benutzerdefinierte TIP-Benutzeroberfläche durchführen.

UIElement-Unterstützung durch die TIP

Die TIP, die das UIElement unterstützt, muss durch GUID_TFCAT_TIPCAP_UIELEMENTENABLED kategorisiert werden. Die TIP in GUID_TFCAT_TIPCAP_UIELEMENTENABLED muss ITfUIElementMgr verwenden, um eine beliebige Benutzeroberfläche anzuzeigen, sodass die Anwendung die Sichtbarkeit der Benutzeroberfläche steuern kann.

Status von UIElement anzeigen/ausblenden: Status anzeigen/ausblenden, der durch die ITfUIElement::Show- oder ITfUIElement::IsShown-Methode angegeben wird, ist der tatsächlich sichtbare Status. Er bezieht sich nicht auf die Verfügbarkeit von UIElement. UIElement sollte immer verfügbar sein, wenn der Anzeigestatus vorhanden ist. Der Anzeigestatus kann von der Anwendung gesteuert werden. Die Anwendung wechselt plötzlich in den UILess-Modus, und beginnt selbst mit dem Zeichnen einer Benutzeroberfläche, indem sie ITfUIElement::Show mit FALSE aufruft, um die Benutzeroberfläche der TIP auszublenden. Dann kann die TIP eine von mehreren Optionen wählen. 1) Die TIP kann das UIElement in den Status „Ausblenden“ verschieben und mit dem Generieren von UpdateUIElement beginnen. 2) Die TIP kann das UIElement fertig stellen, da das UI-Element „Hide status“ nicht unterstützt, und die TIP ruft EndUIElement() auf, um es abzuschließen.

Vordefinierte UI-Elemente

Die Kandidatenliste: Die Kandidatenliste ist eines der wichtigsten UI-Elemente für EA-Eingaben. Dieses UI-Element stellt die Kandidatenliste und die entsprechende Anzahl der Kandidatenzeichenfolgen für die Zeichnung bereit.

Das Leseinformationsfenster Das Leseinformationsfenster ist für die Eingabe über chinesische Tastaturen üblich. Es enthält die Phase, die nicht als Kompositionszeichenfolge in das Dokument eingefügt werden kann. Bei einigen chinesischen Eingabeprozessoren wird ein kleines Leseinformationsfenster geöffnet, in dem die Lese-, Phonetik- oder Eingabeinformationen angezeigt werden.

Das Flussdiagramm von UILessMode

Diagramm, das das Flussdiagramm von UILessMode zeigt.

Nachdem die TIP TRUE in *pbShown durch ITfUIElementMgr::BeginUIElement empfängt, muss die TIP nicht UpdateUIElement für das UIElement aufrufen. Aber die TIP muss EndUIElement() aufrufen, damit ITfUIElementMgr und die Anwendung den Status von UIElement nachverfolgen können. TIP muss UpdateUIElement() aufrufen, nachdem BeginUIElement() FALSE in *pbShow zurückgibt. Die Anwendung, die die Benutzeroberfläche zeichnen möchte, überprüft nicht den Inhalt in BeginUIElement(), sie gibt nur den Anzeigestatus bei BeginUIElement() zurück und beginnt mit der Überprüfung des Inhalts bei UpdateUIElement(). Beispielsweise hat das Update-Flag der Kandidatenliste UIElement alle Bits beim ersten UpdateUIElement(). Dies bedeutet, dass der Inhalt von UIElement bei BeginUIElement() nicht bereit sein muss.

Diagramm, das zeigt, wann die TIP „ITUIElementMgr::BeginUIElement()“ aufruft und „BeginUIElement of Application's UIElementSink“ aufgerufen wird.Diagramm, das zeigt, dass die Anwendung FALSE in *pbShow zurückgibt.UILessmode-Flussdiagramm

UiElement der Kandidatenliste

Informationen zu PageIndex: Die Anwendung, die die Kandidatenliste erstellt, berechnet die Anzahl der Zeichenfolgen pro Seite, wenn der Inhalt der Liste geändert wird (TF_CLUIE_STRING ist festgelegt). Der Seitenindex sollte nicht geändert werden, während die Kandidatenliste für den UILess-Modus verfügbar ist. Dies bedeutet, dass die Kandidatenliste der TIP ein seitenweises Anzeigen durchführen sollte, anstatt zu scrollen, wenn die Auswahl auf die nächste Seite verschoben wird. Wenn beim Verschieben der Auswahl gescrollt wird, wird der Seitenindex geändert und die Anwendung muss den Seitenindex neu berechnen. Das Ergebnis wird möglicherweise nicht von der TIP erwartet.

Keine Auswahl: ITfCandidateListUIElement::GetSelection gibt S_FALSE zurück, wenn die Kandidatenliste keine Auswahl hat. Der Rückgabewert des ersten Parameters ist ungültig.