Sdílet prostřednictvím


Panel jazyků (textové služby)

Implementace objektu panelu jazyků

Aby bylo podporováno přidání položky do panelu jazyků, musí textová služba implementovat objekt, který podporuje ITfSource rozhraní a jeden z ITfLangBarItem ovládací prvky. Po instalaci položky nainstaluje panel jazyků jímku ITfLangBarItemSink jímku voláním položky ITfSource::AdviseSink s IID_ITfLangBarItemSink. Tato položka používá rozhraní ITfLangBarItemSink k upozornění na panel jazyků změn, například když je položka skrytá, zobrazená, povolená nebo zakázaná.

Lze nainstalovat čtyři typy položek panelu jazyků a každé z požadovaných rozhraní je vytvořeno z ITfLangBarItem. Následující jsou možné ITfLangBarItem ovládací prvky.

Element Popis
Knoflík Tlačítko panelu jazyků funguje jako příkazové tlačítko, přepínací ovládací prvek nebo nabídka na panelu jazyků. Objekt musí podporovat ITfLangBarItemButton rozhraní.
Balón Bublina panelu jazyků funguje jako automaticky otevírané oznámení na panelu jazyků. Objekt musí podporovat ITfLangBarItemBalloon rozhraní.
Bitmapa Rastrový obrázek pruhu jazyka funguje jako statický prvek na panelu jazyků, který zobrazuje rastrový obrázek. Objekt musí podporovat ITfLangBarItemBitmap rozhraní.
Bitmap Button Tlačítko rastrového obrázku jazyka funguje jako prvek tlačítka na panelu jazyků, který zobrazuje text a rastrový obrázek. Objekt musí podporovat ITfLangBarItemBitmapButton rozhraní.

 

Styly tlačítek

Prvek tlačítka může fungovat jako kterýkoli z následujících prvků. Funkce položky tlačítka je určena příznaky nastavené v dwStyle člen struktury TF_LANGBARITEMINFO ve ITfLangBarItem::GetInfo metoda.

Element Popis
Knoflík Tlačítko funguje jako standardní příkazové tlačítko. Tento styl tlačítka je identifikován stylem TF_LBI_STYLE_BTN_BUTTON. ITfLangBarItemButton::OnClick je volána při kliknutí na položku. ITfLangBarItemButton::InitMenu a ITfLangBarItemButton::OnMenuSelect se nepoužívají.
Přepnout tlačítko Tlačítko funguje jako ovládací prvek přepínače, který může udržovat stav klikaný, podobně jako zaškrtávací políčko. Tento styl tlačítka je identifikován stylem TF_LBI_STYLE_BTN_TOGGLE. ITfLangBarItemButton::OnClick je volána při kliknutí na položku. ITfLangBarItemButton::InitMenu a ITfLangBarItemButton::OnMenuSelect se nepoužívají.
Menu Tlačítko funguje jako rozevírací nabídka. Tento styl tlačítka je identifikován stylem TF_LBI_STYLE_BTN_MENU. ITfLangBarItemButton::InitMenu je volána při kliknutí na tlačítko. Když uživatel vybere položku v nabídce, panel jazyků volá ITfLangBarItemButton::OnMenuSelect s identifikátorem vybrané položky nabídky. ITfLangBarItemButton::OnClickis se nepoužívá.

 

Implementace tlačítka nabídky

Když uživatel klikne na tlačítko nabídky, panel jazyků volá ITfLangBarItemButton::InitMenu. Položka přidá položky do nabídky pomocí ITfMenu rozhraní předané initMenu.

Pokud chcete do nabídky přidat podnabídku, zavolejte ITfMenu::AddMenuItem s TF_LBMENUF_SUBMENU. Po dokončení se v parametru AddMenuItem vrátí nový objekt ITfMenu, který představuje podnabídku ppMenu parametru AddMenuItem. Tento nový objekt nabídky slouží k přidání položek do podnabídky.

Když uživatel vybere položku v nabídce, panel jazyků volá ITfLangBarItemButton::OnMenuSelect s identifikátorem vybrané položky nabídky.

Přidání položek na panel jazyků

Textová služba by měla přidat své položky na panel jazyků, když je volána jeho ITfTextInputProcessor::Activate metoda, a odebrat je, když je volána jeho ITfTextInputProcessor::D eactivate.

Chcete-li přidat položku do panelu jazyků, textová služba získá rozhraní ITfLangBarItemMgr voláním ITfThreadMgr::QueryInterface s IID_ITfLangBarItemMgr. Textová služba pak volá ITfLangBarItemMgr::AddItem s ukazatelem na objekt položky panelu jazyků.

Textová služba musí položku po deaktivaci odebrat. Textová služba buď používá stejné ITfLangBarItemMgr rozhraní použité k přidání položek nebo získání jiné instance rozhraní. Textová služba pak volá ITfLangBarItemMgr::RemoveItem ukazatelem rozhraní položky, která se má odebrat.

Rozšíření položek panelu jazyka systému

TSF umožňuje přidávat položky nabídky do existujících nabídek na panelu jazyků. To umožňuje textové službě přidávat položky do nabídky jiné textové služby, aniž byste museli na panel nástrojů přidat samostatné tlačítko. To také umožňuje uspořádat položky nabídky do logických skupin. Například textová služba, která poskytuje další funkce standardní službě pro text řeči, může přidávat položky do nabídky služby speech text místo přidání vlastního tlačítka nabídky nejvyšší úrovně.

Textová služba poskytuje rozšíření nabídky řádku jazyků implementací objektu, který podporuje ITfSystemLangBarItemSink rozhraní. Toto rozhraní funguje přesně stejně jako rozhraní ITfLangBarItemButton pro tlačítko nabídky. Při zobrazení nabídky, textové služby rozšířené volání ITfSystemLangBarItemSink::InitMenu. Rozšíření přidá položky do nabídky pomocí ITfMenu rozhraní předané InitMenu. Když uživatel vybere položku přidanou rozšířením, textová služba, která se rozšiřuje, volá ITfSystemLangItemSink::OnMenuSelect s identifikátorem vybrané položky nabídky.

Chcete-li nainstalovat rozšíření nabídky panelu jazyků, textová služba provede následující kroky.

  1. Získejte ITfLangBarItem rozhraní pro položku rozšířit voláním ITfLangBarItemMgr::GetItem s GUID pro položku, která se má rozšířit.
  2. Získejte ITfSource rozhraní pro položku rozšířit voláním ITfLangBarItem::QueryInterface s IID_ITfSource.
  3. Volání ITfSource::AdviseSink s IID_ITfSystemLangBarItemSink a ukazatelem na objekt ITfSystemLangBarItemSink. Pokud ITfSource::AdviseSink selže, textová služba nepodporuje rozšíření nabídek.

ITfSource::UnadviseSinkITfSource::AdviseSink

Podpora rozšíření nabídek panelu jazyků

Textová služba umožňuje dalším textovým službám přidávat položky do nabídek na panelu jazyků, jak je znázorněno výše. Textová služba, která musí publikovat identifikátor GUID, aby položku bylo možné získat voláním ITfLangBarItemMgr::GetItem.

Pro podporu rozšíření nabídky musí textová služba podporovat ITfSource rozhraní. Následující kroky umožňují podporu pro jedno nebo více rozšíření nabídek.

  1. Při ITfSource::AdviseSink s IID_ITfSystemLangBarItemSink je volána, textová služba musí uložit ITfSystemLangBarItemSink rozhraní a vrátit hodnotu cookie, která bude identifikovat rozšíření.
  2. Při ITfLangBarItemButton::InitMenu volá textová služba ITfSystemLangBarItemSink::InitMenu metoda. Textová služba musí implementovat způsob, jak identifikovat položky nabídky přidané rozšířením, a nikoli položky přidané samotnou textovou službou.
  3. Při ITfLangBarItemButton::OnMenuSelect je volána s identifikátorem položky nabídky, který patří do rozšíření, textová služba volá rozšíření ITfSystemLangItemSink::OnMenuSelect metoda.
  4. Když ITfSource::UnadviseSink zavolá s příslušným souborem cookie, textová služba odebere rozšíření nabídky.

Nastavení architektury textových služeb

panel jazyků (aplikace)