Partilhar via


Barra de idiomas (Serviços de texto)

Implementando o objeto da barra de idiomas

Para suportar a adição de um item à barra de idiomas, um serviço de texto deve implementar um objeto que suporte a interface ITfSource e um dos elementos de controle de ITfLangBarItem. Quando o item é instalado, a barra de idiomas instala um ITfLangBarItemSink coletor chamando o do item ITfSource::AdviseSink com IID_ITfLangBarItemSink. O item usa a interface ITfLangBarItemSink para notificar a barra de idiomas sobre alterações, por exemplo, quando o item está oculto, mostrado, habilitado ou desabilitado.

Quatro tipos de itens de barra de idiomas podem ser instalados e cada uma das interfaces necessárias é criada a partir de ITfLangBarItem. O seguinte é possível ITfLangBarItem elementos de controle.

Elemento Descrição
Botão Um botão da barra de idiomas funciona como um botão de comando, controle de alternância ou um menu na barra de idiomas. O objeto deve suportar a interface ITfLangBarItemButton.
Balão Um balão da barra de idiomas funciona como uma notificação pop-up na barra de idiomas. O objeto deve suportar a interface ITfLangBarItemBalloon.
Bitmap Um bitmap da barra de idiomas funciona como um elemento estático na barra de idiomas que exibe um bitmap. O objeto deve suportar a interface ITfLangBarItemBitmap.
Botão Bitmap Um botão bitmap da barra de idiomas funciona como um elemento button na barra de idiomas que exibe texto e um bitmap. O objeto deve suportar a interface ITfLangBarItemBitmapButton.

 

Estilos de botão

Um elemento button pode funcionar como qualquer um dos seguintes. A função do item de botão é determinada pelos sinalizadores definidos no dwStyle membro da estrutura TF_LANGBARITEMINFO no ITfLangBarItem::GetInfo método.

Elemento Descrição
Botão O botão funciona como um botão de comando padrão. Este estilo de botão é identificado pelo estilo TF_LBI_STYLE_BTN_BUTTON. ITfLangBarItemButton::OnClick é chamado quando o item é clicado. ITfLangBarItemButton::InitMenu e ITfLangBarItemButton::OnMenuSelect não são usados.
Botão de alternância O botão funciona como um controle de alternância que pode manter um estado clicado, semelhante a uma caixa de seleção. Este estilo de botão é identificado pelo estilo TF_LBI_STYLE_BTN_TOGGLE. ITfLangBarItemButton::OnClick é chamado quando o item é clicado. ITfLangBarItemButton::InitMenu e ITfLangBarItemButton::OnMenuSelect não são usados.
Cardápio O botão funciona como um menu suspenso. Este estilo de botão é identificado pelo estilo TF_LBI_STYLE_BTN_MENU. ITfLangBarItemButton::InitMenu é chamado quando o botão é clicado. Quando o usuário seleciona um item no menu, a barra de idiomas chama ITfLangBarItemButton::OnMenuSelect com o identificador do item de menu selecionado. ITfLangBarItemButton::OnClickis não é usado.

 

Implementando um botão de menu

Quando o usuário clica em um botão de menu, a barra de idiomas chama ITfLangBarItemButton::InitMenu. O item adiciona itens ao menu usando o ITfMenu interface passada para InitMenu.

Para adicionar um submenu ao menu, chame ITfMenu::AddMenuItem com TF_LBMENUF_SUBMENU. Quando isso é feito, um novo ITfMenu objeto que representa o submenu é retornado no ppMenu parâmetro de AddMenuItem. Este novo objeto de menu é usado para adicionar itens ao submenu.

Quando o usuário seleciona um item no menu, a barra de idiomas chama ITfLangBarItemButton::OnMenuSelect com o identificador do item de menu selecionado.

Adicionando itens à barra de idiomas

Um serviço de texto deve adicionar seus itens à barra de idiomas quando seu ITfTextInputProcessor::Activate método é chamado e removê-los quando seu ITfTextInputProcessor::D eactivate é chamado.

Para adicionar um item à barra de idiomas, o serviço de texto obtém um ITfLangBarItemMgr interface chamando ITfThreadMgr::QueryInterface com IID_ITfLangBarItemMgr. Em seguida, o serviço de texto chama ITfLangBarItemMgr::AddItem com o ponteiro para o objeto de item da barra de idiomas.

O serviço de texto deve remover o item quando desativado. O serviço de texto usa o mesmo ITfLangBarItemMgr interface usada para adicionar os itens ou obtém outra instância da interface. Em seguida, o serviço de texto chama ITfLangBarItemMgr::RemoveItem com o ponteiro de interface do item a ser removido.

Estendendo itens da barra de idiomas do sistema

A TSF oferece a capacidade de adicionar itens de menu aos menus existentes da barra de idiomas. Isso permite que um serviço de texto adicione itens ao menu de outro serviço de texto sem ter que adicionar um botão separado à barra de ferramentas. Isso também permite que os itens de menu sejam organizados em grupos lógicos. Por exemplo, um serviço de texto que fornece recursos adicionais ao serviço de texto de fala padrão pode adicionar itens ao menu do serviço de texto de fala em vez de adicionar seu próprio botão de menu de nível superior.

Um serviço de texto fornece uma extensão de menu da barra de idiomas implementando um objeto que suporta a interface ITfSystemLangBarItemSink. Esta interface funciona exatamente como o ITfLangBarItemButton interface para um botão de menu. Quando o menu é exibido, o serviço de texto que está sendo estendido chama ITfSystemLangBarItemSink::InitMenu. A extensão adiciona itens ao menu usando o ITfMenu interface passada para InitMenu. Quando o usuário seleciona um item adicionado pela extensão, o serviço de texto que está sendo estendido chama ITfSystemLangBarItemSink::OnMenuSelect com o identificador do item de menu selecionado.

Para instalar uma extensão de menu da barra de idiomas, o serviço de texto conclui as etapas a seguir.

  1. Obtenha a interface ITfLangBarItem para o item a ser estendido chamando ITfLangBarItemMgr::GetItem com o GUID para o item a ser estendido.
  2. Obtenha o ITfSource interface para o item a ser estendido chamando ITfLangBarItem::QueryInterface com IID_ITfSource.
  3. Chame ITfSource::AdviseSink com IID_ITfSystemLangBarItemSink e o ponteiro para o ITfSystemLangBarItemSink objeto. Se ITfSource::AdviseSink falhar, o serviço de texto não suporta extensões de menu.

ITfSource::UnadviseSinkITfSource::AdviseSink

Suporte a extensões de menu da barra de idiomas

Um serviço de texto pode permitir que outros serviços de texto adicionem itens aos menus da barra de idiomas, conforme mostrado acima. O serviço de texto que deve publicar seu GUID para que o item possa ser obtido chamando ITfLangBarItemMgr::GetItem.

Para suportar extensões de menu, o serviço de texto deve suportar o interface ITfSource. As etapas a seguir habilitam o suporte para uma ou mais extensões de menu.

  1. Quando ITfSource::AdviseSink com IID_ITfSystemLangBarItemSink é chamado, o serviço de texto deve armazenar o ITfSystemLangBarItemSink interface e retornar um valor de cookie que identificará a extensão.
  2. Quando ITfLangBarItemButton::InitMenu é chamado, o serviço de texto chama o da extensão ITfSystemLangBarItemSink::InitMenu método. O serviço de texto deve implementar uma maneira de identificar os itens de menu adicionados pela extensão, em oposição aos itens adicionados pelo próprio serviço de texto.
  3. Quando ITfLangBarItemButton::OnMenuSelect é chamado com um identificador de item de menu que pertence a uma extensão, o serviço de texto chama o das extensões ITfSystemLangBarItemSink::OnMenuSelect método.
  4. Quando ITfSource::UnadviseSink é chamado com o cookie apropriado, o serviço de texto remove a extensão de menu.

Como configurar o Text Services Framework

Language Bar (Aplicações)