Taalbalk (Tekstservices)
Het taalbalkobject implementeren
Ter ondersteuning van het toevoegen van een item aan de taalbalk moet een tekstservice een object implementeren dat ondersteuning biedt voor de interface ITfSource en een van de ITfLangBarItem- besturingselementen. Wanneer het item is geïnstalleerd, installeert de taalbalk een ITfLangBarItemSink sink door de ITfSource::AdviseSink- aan te roepen met IID_ITfLangBarItemSink. Het item maakt gebruik van de ITfLangBarItemSink-interface om de taalbalk van wijzigingen op de hoogte te stellen, bijvoorbeeld wanneer het item is verborgen, weergegeven, ingeschakeld of uitgeschakeld.
Er kunnen vier typen taalbalkitems worden geïnstalleerd en elk van de vereiste interfaces wordt gemaakt op basis van ITfLangBarItem-. Hieronder ziet u ITfLangBarItem besturingselementen.
Element | Beschrijving |
---|---|
Knoop | Een taalbalkknop fungeert als een opdrachtknop, wisselknop of een menu op de taalbalk. Het object moet de interface ITfLangBarItemButton ondersteunen. |
Ballon | Een taalbalkballon fungeert als pop-upmelding op de taalbalk. Het object moet de interface ITfLangBarItemBalloon ondersteunen. |
Bitmap | Een taalbalk bitmap fungeert als een statisch element op de taalbalk die een bitmap weergeeft. Het object moet de interface ITfLangBarItemBitmap ondersteunen. |
Bitmapknop | Een taalbalk bitmapknop fungeert als een knopelement op de taalbalk waarin tekst en een bitmap worden weergegeven. Het object moet de interface ITfLangBarItemBitmapButton ondersteunen. |
Knopstijlen
Een knopelement kan fungeren als een van de volgende opties. De functie van het knopitem wordt bepaald door de vlaggen die zijn ingesteld in de dwStyle lid van de TF_LANGBARITEMINFO structuur in de methode ITfLangBarItem::GetInfo.
Element | Beschrijving |
---|---|
Knoop | De knop fungeert als een standaardopdrachtknop. Deze knopstijl wordt geïdentificeerd door de TF_LBI_STYLE_BTN_BUTTON stijl. ITfLangBarItemButton::OnClick wordt aangeroepen wanneer op het item wordt geklikt. ITfLangBarItemButton::InitMenu en ITfLangBarItemButton::OnMenuSelect worden niet gebruikt. |
Wisselknop | De knop fungeert als een wisselknop die de status van een klik kan behouden, vergelijkbaar met een selectievakje. Deze knopstijl wordt geïdentificeerd door de TF_LBI_STYLE_BTN_TOGGLE stijl. ITfLangBarItemButton::OnClick wordt aangeroepen wanneer op het item wordt geklikt. ITfLangBarItemButton::InitMenu en ITfLangBarItemButton::OnMenuSelect worden niet gebruikt. |
Menu | De knop fungeert als een vervolgkeuzelijst. Deze knopstijl wordt geïdentificeerd door de TF_LBI_STYLE_BTN_MENU stijl. ITfLangBarItemButton::InitMenu wordt aangeroepen wanneer op de knop wordt geklikt. Wanneer de gebruiker een item in het menu selecteert, roept de taalbalk ITfLangBarItemButton::OnMenuSelect aan met de id van het geselecteerde menu-item. ITfLangBarItemButton::OnClickis niet gebruikt. |
Een menuknop implementeren
Wanneer de gebruiker op een menuknop klikt, roept de taalbalk ITfLangBarItemButton::InitMenuaan. Het item voegt items toe aan het menu met behulp van de ITfMenu interface die wordt doorgegeven aan InitMenu.
Als u een submenu aan het menu wilt toevoegen, roept u ITfMenu::AddMenuItem- aan met TF_LBMENUF_SUBMENU. Wanneer dit is gebeurd, wordt een nieuw ITfMenu object dat het submenu vertegenwoordigt, geretourneerd in de parameter ppMenu parameter van AddMenuItem. Dit nieuwe menuobject wordt gebruikt om items toe te voegen aan het submenu.
Wanneer de gebruiker een item in het menu selecteert, roept de taalbalk ITfLangBarItemButton::OnMenuSelect aan met de id van het geselecteerde menu-item.
Items toevoegen aan de taalbalk
Een tekstservice moet de items aan de taalbalk toevoegen wanneer de methode ITfTextInputProcessor::Activate wordt aangeroepen en verwijderd wanneer de methode ITfTextInputProcessor::D eactivate wordt aangeroepen.
Als u een item wilt toevoegen aan de taalbalk, verkrijgt de tekstservice een ITfLangBarItemMgr-interface door ITfThreadMgr::QueryInterface aan te roepen met IID_ITfLangBarItemMgr. De tekstservice roept vervolgens ITfLangBarItemMgr::AddItem- aan met de aanwijzer naar het object van het taalbalkitem.
De tekstservice moet het item verwijderen wanneer het is gedeactiveerd. De tekstservice maakt gebruik van dezelfde ITfLangBarItemMgr interface die wordt gebruikt om de items toe te voegen of een ander exemplaar van de interface op te halen. De tekstservice roept vervolgens ITfLangBarItemMgr::RemoveItem aan met de interfacepointer van het item dat u wilt verwijderen.
Systeemtaalbalkitems uitbreiden
TSF biedt de mogelijkheid om menu-items toe te voegen aan bestaande taalbalkmenu's. Hierdoor kan een tekstservice items toevoegen aan het menu van een andere tekstservice zonder dat er een afzonderlijke knop aan de werkbalk hoeft te worden toegevoegd. Hierdoor kunnen de menu-items ook worden ingedeeld in logische groepen. Een tekstservice die extra functies biedt voor de standaardservice voor spraaktekst kan bijvoorbeeld items toevoegen aan het menu van de spraaktekstservice in plaats van een eigen menuknop op het hoogste niveau toe te voegen.
Een tekstservice biedt een menu-extensie voor de taalbalk door een object te implementeren dat ondersteuning biedt voor de ITfSystemLangBarItemSink interface. Deze interface werkt precies zoals de interface ITfLangBarItemButton interface voor een menuknop. Wanneer het menu wordt weergegeven, wordt de tekstservice uitgebreid aanroepen ITfSystemLangBarItemSink::InitMenu. De extensie voegt items toe aan het menu met behulp van de ITfMenu interface die wordt doorgegeven aan InitMenu. Wanneer de gebruiker een item selecteert dat door de extensie is toegevoegd, wordt de tekstservice uitgebreid aanroepen ITfSystemLangBarItemSink::OnMenuSelect met de id van het geselecteerde menu-item.
Als u een menuextensie voor de taalbalk wilt installeren, voert de tekstservice de volgende stappen uit.
- Haal de ITfLangBarItem interface op die het item kan uitbreiden door ITfLangBarItemMgr::GetItem- aan te roepen met de GUID- voor het item dat moet worden uitgebreid.
- Haal de ITfSource--interface op die het item kan uitbreiden door ITfLangBarItem::QueryInterface aan te roepen met IID_ITfSource.
- Roep ITfSource::AdviseSink aan met IID_ITfSystemLangBarItemSink en de aanwijzer naar het object ITfSystemLangBarItemS ink. Als ITfSource::AdviseSink mislukt, biedt de tekstservice geen ondersteuning voor menu-extensies.
ITfSource::UnadviseSinkITfSource::AdviseSink
Menu-extensies voor ondersteunende taalbalk
Met een tekstservice kunnen andere tekstservices items toevoegen aan de taalbalkmenu's, zoals hierboven wordt weergegeven. De tekstservice die de GUID moet publiceren, zodat het item kan worden verkregen door ITfLangBarItemMgr::GetItemaan te roepen.
Als u menu-extensies wilt ondersteunen, moet de tekstservice de interface ITfSource ondersteunen. Met de volgende stappen schakelt u ondersteuning in voor een of meer menu-extensies.
- Wanneer ITfSource::AdviseSink met IID_ITfSystemLangBarItemSink wordt aangeroepen, moet de tekstservice de ITfSystemLangBarItemSink interface opslaan en een cookiewaarde retourneren waarmee de extensie wordt geïdentificeerd.
- Wanneer ITfLangBarItemButton::InitMenu wordt aangeroepen, roept de tekstservice de methode ITfSystemLangBarItemSink::InitMenu aan. De tekstservice moet een manier implementeren om de menu-items te identificeren die door de extensie zijn toegevoegd in plaats van de items die door de tekstservice zelf zijn toegevoegd.
- Wanneer ITfLangBarItemButton::OnMenuSelect wordt aangeroepen met een menu-item-id die deel uitmaakt van een extensie, roept de tekstservice de methode ITfSystemLangBarItemSink::OnMenuSelect methode aan.
- Wanneer ITfSource::UnadviseSink wordt aangeroepen met de juiste cookie, verwijdert de tekstservice de menu-extensie.
Verwante onderwerpen