Freigeben über


Übersicht über den unbenutzeroberflächenlosen Modus

Erstellen von UILessMode

Erstellen eines Threads ohne Benutzeroberfläche: Die Anwendung kann mithilfe von ITfThreadMgrEx::ActivateEx mit ITF_AE_UIELEMENTENABLEDONLY einen Weniger-Ui-Thread erstellen. Wenn ThreadMgr mit diesem Flag aktiviert wird, werden nur TIPs aktiviert, die das Benutzeroberflächenelement steuern können. Die Anwendung muss die ITfUIElementSink-Schnittstelle implementieren und die Schnittstelle im Thread-Manager beraten. ITfUIElementSink::BeginUIElement wird aufgerufen, wenn TIP die Benutzeroberfläche anzeigt. Die Anwendung kann true im pbShow-Parameter zurückgeben, damit TIP die ursprüngliche Benutzeroberfläche von TIP anzeigen kann, wenn die Anwendung nicht zeichnen möchte. Wenn die Anwendung die Benutzeroberfläche von TIP nicht zulässt, 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-Param erhält. Dies kann die Kandidatenliste, das Sprachleistenelement oder die benutzerdefinierte Benutzeroberfläche von TIP sein. Die Anwendung kann die Art der Benutzeroberfläche von QIing ITfUIElement-Schnittstelle kennen. Wenn die Benutzeroberfläche geändert wird, wird ITfUIElementSink::UpdateUIElement aufgerufen. Die Anwendung kann die GUID aus pElement-GetGUID>() vergleichen, um zu ermitteln, ob das Element derzeit von der Anwendung gezeichnet wird.

Tipp zur Berücksichtigung der Benutzeroberfläche: TIP sollte den Modus "Ui less" unterstützen, wenn es unter der Anwendung ausgeführt werden soll, die die Benutzeroberfläche von TIP nicht zulassen möchte, z. B. Spieleanwendung oder Vollbildanwendungen. Um die Benutzeroberfläche weniger zu kennen, muss TIP die ITfTextInputProcessorEx-Schnittstelle implementieren. Wenn diese Schnittstelle nicht implementiert ist, wird TIP nicht im Thread mit weniger Ui-Modus aktiviert. Darüber hinaus muss TIP ITFUIElementMgr::BeginUIElement aufrufen, bevor eine sichtbare Benutzeroberfläche auf dem Bildschirm angezeigt wird. Diese Methode ruft ITfUIElementSink auf, um die Anwendung zu benachrichtigen. Und die Anwendung entscheidet, ob sie angezeigt werden kann oder nicht. Wenn TIP BeginUIElement() aufruft, muss TIP über die ITfUIElement-Schnittstelle für die entsprechende Benutzeroberfläche verfügen. Die Anwendung wird die Schnittstelle verwenden, um eine andere ui-spezifische Schnittstelle abzurufen, um weitere Informationen abzurufen, um die Benutzeroberfläche zu zeichnen. Das System definiert ITfCandidateListUIElement und ITfReadingInformationUIElement für TIP. Wenn TIP die Kandidatenliste im Thread mit weniger Benutzeroberflächenmodus anzeigen möchte, muss TIP eine instance der ITfCandidateListUIElement-Schnittstelle erstellen und ITFUIElementMgr::BeginUIElement aufrufen. Wenn ITfTextInputProcessorEx::ActivateEx aufgerufen wird, weiß TIP bereits, dass der Thread weniger ui ist, sodass die zusätzliche benutzerdefinierte Benutzeroberfläche entfernt werden kann. Es kann jedoch natürlich eine eigene Schnittstelle implementieren, von der aus QIed ausgeführt werden kann, und versuchen, eine Benachrichtigung zu erstellen. Daher können TIP und dasappli ITfUIElement-Kationeine Aushandlung für die benutzerdefinierte TIP-Benutzeroberfläche haben.

UIElement, das TIP unterstützt

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

Einblenden/Ausblenden status von UIElement: Status anzeigen/ausblenden, die durch die ITfUIElement::Show- oder ITfUIElement::IsShown-Methode angegeben ist, ist die tatsächliche sichtbare status. Dies steht nicht im Zusammenhang mit der Verfügbarkeit von UIElement. UIElement sollte immer verfügbar sein, wenn die status angezeigt wird. Die show status kann von der Anwendung aus gesteuert werden. Die Anwendung wechselt möglicherweise plötzlich in den Modus "UiLess" und beginnt, eine Benutzeroberfläche selbst zu zeichnen, indem ITfUIElement::Show mit FALSE aufgerufen wird, um die gesamte Benutzeroberfläche von TIP auszublenden. Dann kann TIP eine von einigen Optionen verwenden. 1) TIP kann das UIElement in die status ausblenden verschieben und mit der Generierung von UpdateUIElement beginnen. 2) TIP kann UIElement beenden, da das UI-Element status ausblenden nicht unterstützt, und Tipp ruft EndUIElement() auf, um es fertigzustellen.

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 zum Zeichnen bereit.

Das Leseinformationsfenster Das Leseinformationsfenster ist üblich für chinesische Tastatureingaben. Es verfügt über die Phase, die nicht als Kompositionszeichenfolge in das Dokument eingefügt werden kann. Einige chinesische Eingabeprozessoren öffnen ein kleines Leseinformationsfenster, in dem die Lese-, Phonetik- oder Eingabeinformationen angezeigt werden.

Das Flussdiagramm von UILessMode

Diagramm, das das U I LessMode-Flussdiagramm zeigt.

Nachdem der TIP TRUE in *pbShown by ITfUIElementMgr::BeginUIElement empfängt, muss tip nicht UpdateUIElement für das UIElement aufrufen. TIP muss jedoch EndUIElement() aufrufen, damit das ITfUIElementMgr und die Anwendung die 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 lediglich die show status bei BeginUIElement() zurück und beginnt mit der Überprüfung des Inhalts unter UpdateUIElement(). Beispielsweise enthält das Updateflag des Kandidatenlisten-UIElements alle Bits am ersten UpdateUIElement(). Dies bedeutet, dass der Inhalt von UIElement bei BeginUIElement() nicht bereit sein muss.

Diagramm, das zeigt, wann der T IP Diagramm, das zeigt, dass die Anwendung false in *pbShow zurückgibt.Uilessmode-Flussdiagramm

UiElement für die Kandidatenliste

Informationen zu PageIndex: Die Anwendung, die die Kandidatenliste zeichnet, berechnet die Anzahl der Zeichenfolgen pro Seite, wenn der Inhalt der Liste geändert wird (TF_CLUIE_STRING festgelegt ist). Es ist nicht gut, den Seitenindex zu ändern, während die Kandidatenliste für den UiLess-Modus verfügbar ist. Dies bedeutet, dass sich die Kandidatenliste von TIP beim Paging verhalten sollte, anstatt zu scrollen, wenn die Auswahl auf die nächste Seite verschoben wird. Wenn der Bildlauf beim Verschieben der Auswahl erfolgt, wird der Seitenindex geändert, und die Anwendung muss den Seitenindex neu berechnen. Das Ergebnis wird von TIP möglicherweise nicht erwartet.

No Selection:ITfCandidateListUIElement::GetSelection gibt S_FALSE zurück, wenn die Kandidatenliste keine Auswahl enthält. Der Rückgabewert des ersten Param ist ungültig.