Overzicht van uiloze modus

UILessMode maken

UI-loze draad maken: De applicatie kan een UI-loze draad maken door ITfThreadMgrEx::ActivateEx met ITF_AE_UIELEMENTENABLEDONLY. Wanneer ThreadMgr met deze vlag wordt geactiveerd, worden alleen TIPs die het UI-element ervan kunnen beheren, geactiveerd op de thread. De toepassing moet de ITfUIElementSink-interface implementeren en de interface in de threadmanager integreren. ITfUIElementSink::BeginUIElement wordt aangeroepen wanneer TIP de gebruikersinterface weergeeft. De toepassing kan TRUE in pbShow param retourneren zodat TIP de originele UI van TIP kan weergeven wanneer de toepassing niet wil tekenen. Als de applicatie de gebruikersinterface van TIP niet toestaat, kan deze ONWAAR in pbShow retourneren (zie de onderstaande diagrammen). De toepassing kan de gebruikersinterface zelf tekenen door informatie op te halen uit de pElement param. Dit kan de lijst met kandidaten, het taalbalkitem of de aangepaste gebruikersinterface van TIP zijn. De toepassing kan het soort gebruikersinterface herkennen via QIing ITfUIElement interface. Wanneer de gebruikersinterface wordt gewijzigd, wordt ITfUIElementSink::UpdateUIElement aangeroepen. De toepassing kan de GUID van pElement->GetGUID() vergelijken om te weten of het element momenteel door de toepassing wordt getekend.

UI-loze TIP maken: TIP moet een modus zonder gebruikersinterface ondersteunen als het wil draaien onder een applicatie die de gebruikersinterface van TIP niet toestaat, zoals een game-applicatie of volledig scherm applicaties. Tip moet de ITfTextInputProcessorEx interface implementeren om minder afhankelijk van de gebruikersinterface te zijn. Als deze interface niet is geïmplementeerd, wordt TIP niet geactiveerd in de modus zonder gebruikersinterface. Daarnaast moet TIP ITFUIElementMgr::BeginUIElement aanroepen voordat er een zichtbare gebruikersinterface voor het scherm wordt weergegeven. Met deze methode wordt een aanroep uitgevoerd naar ITfUIElementSink om de toepassing op de hoogte te stellen. En de toepassing bepaalt of deze wel of niet kan worden weergegeven. Wanneer TIP BeginUIElement() aanroept, moet TIP beschikken over de ITfUIElement interface voor de bijbehorende gebruikersinterface. De toepassing zal de interface QI'en om een andere gebruikersinterfacespecifieke interface te verkrijgen voor het ophalen van meer informatie om de gebruikersinterface te kunnen tekenen. Het systeem definieert vooraf ITfCandidateListUIElement en ITfReadingInformationUIElement voor TIP. Als TIP een kandidatenlijst wil weergeven in een modus zonder gebruikersinterface thread, moet TIP een instantie van de ITfCandidateListUIElement interface maken en ITFUIElementMgr::BeginUIElementaanroepen. Wanneer ITfTextInputProcessorEx::ActivateEx wordt aangeroepen, weet TIP al dat de thread geen gebruikersinterface meer heeft, zodat de extra aangepaste gebruikersinterface kan worden weggelaten. Het kan echter een eigen interface implementeren waarvan QI kan worden uitgevoerd en proberen een melding te maken. Dus kunnen TIP en de applicatieITfUIElementonderhandelen over de aangepaste UI van TIP.

UIElement ondersteunende TIP

De TIP die het UIElement ondersteunt, moet worden gecategoriseerd onder GUID_TFCAT_TIPCAP_UIELEMENTENABLED. De TIP in GUID_TFCAT_TIPCAP_UIELEMENTENABLED moet ITfUIElementMgr gebruiken om een gebruikersinterface weer te geven, zodat de toepassing de zichtbaarheid van de gebruikersinterface kan beheersen.

Status van UIElement weergeven/verbergen: Status weergeven/verbergen die wordt aangegeven door ITfUIElement::Show of ITfUIElement::IsShown methode is de werkelijke zichtbare status. Het is niet gerelateerd aan de beschikbaarheid van UIElement. UIElement moet altijd beschikbaar zijn wanneer de weergavestatus bestaat. De weergavestatus kan worden beheerd vanuit de toepassing. De toepassing kan plotseling overschakelen naar de modus UILess en zelf enkele gebruikersinterface gaan tekenen door ITfUIElement::Toon met ONWAAR om alle gebruikersinterface van TIP te verbergen. Vervolgens kan TIP een van de volgende opties hebben. 1) TIP kan het UIElement verplaatsen naar de status Verbergen en beginnen met het genereren van UpdateUIElement. 2) TIP kan UIElement voltooien omdat het UI-element de status Verbergen niet ondersteunt en Tip endUIElement() aanroept om het te voltooien.

Vooraf gedefinieerde ui-elementen

De lijst met kandidaten: De lijst met kandidaten is een van de belangrijkste elementen van de gebruikersinterface voor EA-invoer. Dit UI-element bevat de lijst met kandidaten en het bijbehorende aantal kandidaattekenreeksen voor tekenen.

Het leesinformatievenster Het leesinformatievenster is gebruikelijk voor Chinese toetsenbordinvoer. Het heeft een fase die niet als een samenstellingsreeks in het document kan worden ingevoegd. Een Chinese invoerprocessor opent een klein venster met lees-, fonetische of typinformatie.

Het stroomdiagram van UILessMode

Diagram dat het stroomdiagram van de U I LessMode laat zien.

Nadat de TIP TRUE in *pbShown by ITfUIElementMgr::BeginUIElementheeft ontvangen, hoeft de TIP UpdateUIElement niet aan te roepen voor het UIElement. Maar TIP moet EndUIElement() aanroepen, zodat de ITfUIElementMgr- en de toepassing de status van UIElement kan bijhouden. TIP moet UpdateUIElement() aanroepen nadat BeginUIElement() FALSE retourneert in *pbShow. De toepassing die de gebruikersinterface wil tekenen, controleert de inhoud in BeginUIElement() niet, maar retourneert alleen de weergavestatus bij BeginUIElement() en begint met het controleren van de inhoud bij UpdateUIElement(). De updatevlag van de kandidaatlijst UIElement heeft bijvoorbeeld alle bits in het eerste UpdateUIElement(). Dit betekent dat de inhoud van UIElement niet gereed hoeft te zijn bij BeginUIElement().

Diagram dat laat zien wanneer de T I P 'ITUIElementMgr::BeginUIElement()' en 'BeginUIElement van de UIElementSink van de toepassing' worden aangeroepen. Diagram waarin de applicatie FALSE retourneert in *pbShow. uilessmode stroomdiagram

De lijst met kandidaten UIElement

About PageIndex: De toepassing die de lijst met kandidaten tekent, berekent het aantal tekenreeksen per pagina wanneer de inhoud van de lijst wordt gewijzigd (TF_CLUIE_STRING is ingesteld). Het is niet goed om de pagina-index te wijzigen terwijl de lijst met kandidaten beschikbaar is voor de modus Gebruikersinterfaceloos. Dit betekent dat de kandidatenlijst van TIP moet pagineren in plaats van scrollen wanneer de selectie naar de volgende pagina wordt verplaatst. Als de schuif gebeurt terwijl de selectie verschuift, wordt de pagina-index gewijzigd en moet de applicatie de pagina-index opnieuw berekenen. Het resultaat wordt mogelijk niet verwacht door TIP.

Geen selectie:ITfCandidateListUIElement::GetSelection retourneert S_FALSE als de lijst met kandidaten geen selectie heeft. De retourwaarde van de eerste parameter is ongeldig.