Share via


Visão geral do modo sem interface do usuário

Como criar UILessMode

Tornando o Thread sem interface do usuário: O aplicativo pode tornar uma interface do usuário menos thread por ITfThreadMgrEx::ActivateEx com ITF_AE_UIELEMENTENABLEDONLY. Quando o ThreadMgr é ativado com esse sinalizador, somente TIPs que podem controlar seu elemento de interface do usuário são ativados no thread. O aplicativo precisa implementar a interface ITfUIElementSink e aconselhar a interface no gerenciador de threads. ITfUIElementSink::BeginUIElement é chamado quando TIP mostra sua interface do usuário. O aplicativo pode retornar TRUE no parâmetro pbShow para permitir que TIP mostre a interface do usuário original da TIP quando o aplicativo não quiser desenhar. Se o aplicativo não permitir a interface do usuário da TIP, ele poderá retornar FALSE no pbShow (consulte diagramas abaixo). O aplicativo pode desenhar a interface do usuário por si só obtendo algumas informações do parâmetro pElement . Pode ser a lista de candidatos, o item da barra de idiomas ou a interface do usuário personalizada da TIP. O aplicativo pode saber o tipo de interface do usuário pela interface ITfUIElement de QIing. Quando a interface do usuário é alterada, ITfUIElementSink::UpdateUIElement é chamado. O aplicativo pode comparar o GUID de pElement-GetGUID>() para saber se o elemento é desenhado atualmente pelo aplicativo.

Tornando a dica sem reconhecimento de interface do usuário: A DICA deverá dar suporte ao modo menos de interface do usuário se quiser ser executada no aplicativo que não deseja permitir a interface do usuário da TIP, como aplicativos de jogo ou de tela inteira. Para ter menos reconhecimento da interface do usuário, a TIP precisa implementar a interface ITfTextInputProcessorEx . Se essa interface não for implementada, a TIP não será ativada no thread de modo sem interface do usuário. Além disso, a TIP deve chamar ITFUIElementMgr::BeginUIElement antes de mostrar uma interface do usuário visível para a tela. Esse método faz uma chamada para ITfUIElementSink para notificar o aplicativo. E o aplicativo decidirá se ele pode ser mostrado ou não. Quando TIP chama BeginUIElement(), TIP precisa ter a interface ITfUIElement para a interface do usuário correspondente. O aplicativo qi a interface para obter outra interface específica da interface do usuário para recuperar mais informações para desenhar a interface do usuário. O sistema predefini ITfCandidateListUIElement e ITfReadingInformationUIElement para TIP. Quando TIP quiser mostrar a lista de candidatos em thread de modo menos de interface do usuário, a TIP deve criar uma instância da interface ITfCandidateListUIElement e chamar ITFUIElementMgr::BeginUIElement. Quando ITfTextInputProcessorEx::ActivateEx é chamado, a TIP já sabe que o thread é menos mais da interface do usuário para que possa eliminar a interface do usuário personalizada extra. No entanto, é claro, ele pode implementar sua própria interface que pode ser QIed de e tentar fazer uma notificação. Assim, TIP e a cationappli ITfUIElementpodem ter uma negociação para a interface do usuário personalizada tip.

DICA de suporte do UIElement

A DICA que dá suporte ao UIElement deve ser categorizada por GUID_TFCAT_TIPCAP_UIELEMENTENABLED. A TIP no GUID_TFCAT_TIPCAP_UIELEMENTENABLED deve usar ITfUIElementMgr para mostrar qualquer interface do usuário para que o aplicativo possa controlar a visibilidade da interface do usuário.

Mostrar/ocultar status de UIElement: mostrar/ocultar status que é indicado por ITfUIElement::Show ou método ITfUIElement::IsShown é o status visível real. Ele não está relacionado à disponibilidade de UIElement. UIElement deve estar sempre disponível quando a status de exibição existir. O show status é controlável do aplicativo. De repente, o aplicativo pode passar para o modo UILess e começar a desenhar alguma interface do usuário por si só, chamando ITfUIElement::Show com FALSE para ocultar toda a interface do usuário da TIP. Em seguida, TIP pode ter uma de algumas opções. 1) A DICA pode mover o UIElement para o status Ocultar e começar a gerar UpdateUIElement. 2) A DICA pode concluir o UIElement, pois o elemento de interface do usuário não dá suporte a Ocultar status e Tip chama EndUIElement() para concluí-lo.

Elementos de interface do usuário predefinidos

A lista de candidatos: A lista de candidatos é um dos principais elementos da interface do usuário para entrada do EA. Esse elemento de interface do usuário fornece a lista de candidatos e o número correspondente das cadeias de caracteres candidatas para desenho.

A janela de informações de leitura A janela de informações de leitura é comum para entrada de teclado chinês. Ele tem o estágio que não pode ser inserido no documento como a cadeia de caracteres de composição. Algum Processador de Entrada Chinês abre uma pequena janela de informações de leitura que mostra as informações de leitura, fonéticas ou de digitação.

O fluxograma de UILessMode

Diagrama que mostra o fluxograma U I LessMode.

Depois que a TIP recebe TRUE em *pbShown por ITfUIElementMgr::BeginUIElement, a TIP não precisa chamar UpdateUIElement para o UIElement. Mas a TIP precisa chamar EndUIElement() para que o ITfUIElementMgr e o aplicativo possam acompanhar o status de UIElement. A TIP deve chamar UpdateUIElement() depois que BeginUIElement() retornar FALSE em *pbShow. O aplicativo que deseja desenhar a interface do usuário não marcar o conteúdo em BeginUIElement(), ele apenas retorna o show status em BeginUIElement() e começa a verificar o conteúdo em UpdateUIElement(). Por exemplo, o sinalizador de atualização da lista de candidatos UIElement tem todos os bits no primeiro UpdateUIElement(). Isso significa que o conteúdo de UIElement não precisa estar pronto em BeginUIElement().

Diagrama que mostra quando o T IP chama 'ITUIElementMgr::BeginUIElement()' e 'BeginUIElement of Application's UIElementSink' é chamado.Diagrama que mostra que o aplicativo retorna FALSE em *pbShow.gráfico de fluxo uilessmode

A lista de candidatos UIElement

Sobre PageIndex: O aplicativo que desenha a lista de candidatos calculará o número de cadeias de caracteres por página quando o conteúdo da lista for alterado (TF_CLUIE_STRING está definido). Não é bom alterar o índice de página enquanto a lista de candidatos está disponível para o modo UILess. Isso significa que a lista de candidatos da TIP deve se comportar com a paginação em vez de rolar quando a seleção for movida para a próxima página. Se a rolagem ocorrer na seleção, o índice de página será alterado e o aplicativo precisará recalcular o índice da página. O resultado pode não ser esperado por TIP.

Sem Selection:ITfCandidateListUIElement::GetSelection retorna S_FALSE, se a lista de candidatos não tiver uma seleção. O valor retornado do primeiro parâmetro é inválido.