Ler em inglês

Compartilhar via


Barra de Idiomas (Serviços de Texto)

Implementando o objeto da barra de idiomas

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

Quatro tipos de itens da barra de idiomas podem ser instalados e cada uma das interfaces necessárias é criada a partir de ITfLangBarItem. Veja a seguir os possíveis elementos de controle ITfLangBarItem .

Elemento Descrição
Botão Um botão de barra de idiomas funciona como um botão de comando, controle de alternância ou um menu na barra de idiomas. O objeto deve dar suporte à interface ITfLangBarItemButton.
Balão Um balão de barra de idiomas funciona como uma notificação pop-up na barra de idiomas. O objeto deve dar suporte à interface ITfLangBarItemBalloon.
Bitmap Um bitmap da barra de linguagem funciona como um elemento estático na barra de linguagem que exibe um bitmap. O objeto deve dar suporte à interface ITfLangBarItemBitmap.
Botão Bitmap Um botão bitmap da barra de idiomas funciona como um elemento de botão na barra de idiomas que exibe texto e um bitmap. O objeto deve dar suporte à 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 membro dwStyle da estrutura TF_LANGBARITEMINFO no método ITfLangBarItem::GetInfo .

Elemento Descrição
Botão O botão funciona como um botão de comando padrão. Esse 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 marcar. Esse 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.
Menu O botão funciona como um menu suspenso. Esse 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 a interface ITfMenu passada para InitMenu.

Para adicionar um submenu ao menu, chame ITfMenu::AddMenuItem com TF_LBMENUF_SUBMENU. Quando isso é feito, um novo objeto ITfMenu que representa o submenu é retornado no parâmetro ppMenu de AddMenuItem. Esse 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 método ITfTextInputProcessor::Activate for chamado e removê-los quando seu ITfTextInputProcessor::D eactivate for chamado.

Para adicionar um item à barra de idiomas, o serviço de texto obtém uma interface ITfLangBarItemMgr 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 a mesma interface ITfLangBarItemMgr 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

O TSF fornece a capacidade de adicionar itens de menu aos menus da barra de idiomas existentes. Isso permite que um serviço de texto adicione itens ao menu de outro serviço de texto sem precisar 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 dá suporte à interface ITfSystemLangBarItemSink . Essa interface funciona exatamente como a interface ITfLangBarItemButton 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 a interface ITfMenu 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 que o item se estenda chamando ITfLangBarItemMgr::GetItem com o GUID para que o item seja estendido.
  2. Obtenha a interface ITfSource para que o item se estenda chamando ITfLangBarItem::QueryInterface com IID_ITfSource.
  3. Chame ITfSource::AdviseSink com IID_ITfSystemLangBarItemSink e o ponteiro para o objeto ITfSystemLangBarItemSink . Se ITfSource::AdviseSink falhar, o serviço de texto não dará suporte a 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 dar suporte a extensões de menu, o serviço de texto deve dar suporte à 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 a interface ITfSystemLangBarItemSink e retornar um valor de cookie que identificará a extensão.
  2. Quando ITfLangBarItemButton::InitMenu é chamado, o serviço de texto chama o método ITfSystemLangBarItemSink::InitMenu da extensão. O serviço de texto deve implementar uma maneira de identificar os itens de menu adicionados pela extensão em vez dos 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 método ITfSystemLangBarItemSink::OnMenuSelect das extensões.
  4. Quando ITfSource::UnadviseSink é chamado com o cookie apropriado, o serviço de texto remove a extensão de menu.

Como configurar a Estrutura de Serviços de Texto

Barra de Idiomas (Aplicativos)