Visão geral do modo UILess

Como criar UILessMode

Criar um Thread sem interface de utilizador: O aplicativo pode criar um Thread sem interface de utilizador 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. A aplicação precisa implementar a interface de ITfUIElementSink e registrar a interface no gestor de threads. ITfUIElementSink::BeginUIElement é chamado quando o TIP mostra a sua interface de utilizador. O aplicativo pode retornar TRUE no pbShow param para permitir que TIP mostre a interface do usuário original do TIP quando o aplicativo não quiser desenhar. Se a aplicação não permitir a IU do TIP, pode retornar FALSE no pbShow (veja os diagramas abaixo). O aplicativo pode desenhar a interface do usuário por si só, obtendo algumas informações do pElement param. Pode ser a lista de candidatos, o item da barra de idiomas ou a interface do usuário personalizada do TIP. O aplicativo pode conhecer o tipo de interface do usuário por QIing ITfUIElement interface. Quando a interface do usuário é alterada, é chamado ITfUIElementSink::UpdateUIElement. O aplicativo pode comparar o GUID de pElement->GetGUID() para saber se o elemento está atualmente desenhado pelo aplicativo.

Adaptar o TIP a um ambiente sem interface DICA: O TIP deve suportar o modo sem interface do usuário se quiser ser executado em aplicações que não permitem a interface do TIP, como jogos ou aplicações de ecrã completo. Para ser menos consciente da interface do usuário, o TIP precisa implementar interface ITfTextInputProcessorEx. Se esta interface não for implementada, o TIP não será ativado no modo de execução sem interface do utilizador. Além disso, o TIP deve chamar ITFUIElementMgr::BeginUIElement antes de mostrar uma interface visível na 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 o TIP chama BeginUIElement(), o TIP precisa ter a ITfUIElement interface para o elemento da interface do utilizador correspondente. A aplicação irá QI a interface para obter outra interface específica da UI, com o objetivo de recuperar mais informações para desenhar a UI. O sistema predefine ITfCandidateListUIElement e ITfReadingInformationUIElement para TIP. Quando o TIP quiser mostrar a lista de candidatos em um modo de thread sem interface do utilizador, o TIP deve criar uma instância da interface ITfCandidateListUIElement e chamar ITFUIElementMgr::BeginUIElement. Quando ITfTextInputProcessorEx::ActivateEx é chamado, a TIP já sabe que o thread está sem interface de utilizador, para que possa eliminar a interface de utilizador personalizada extra. No entanto, evidentemente, pode implementar a sua própria interface a partir da qual se possa QIar e tentar fazer uma notificação. Assim, o TIP e a aplicaçãoITfUIElementcation podem negociar a interface de utilizador personalizada TIP.

UIElement Suporte TIP

A TIP que dá suporte ao UIElement deve ser classificada como GUID_TFCAT_TIPCAP_UIELEMENTENABLED. A TIP em GUID_TFCAT_TIPCAP_UIELEMENTENABLED deve usar ITfUIElementMgr para exibir qualquer elemento de IU para que a aplicação possa controlar a visibilidade da IU.

Mostrar/Ocultar status de UIElement: status Mostrar/Ocultar indicado por ITfUIElement::Show ou ITfUIElement::IsShown método é o status visível real. Não está relacionado com a disponibilidade do UIElement. UIElement deve estar sempre disponível quando o 'estado de exibição' estiver presente. O show status é controlável a partir do aplicativo. A aplicação pode subitamente passar para o modo UILess e começar a exibir alguma interface do utilizador automaticamente, chamando ITfUIElement::Show com FALSE para ocultar toda a interface do utilizador de TIP. Então a TIP pode tomar uma de algumas opções. 1) TIP pode mover o UIElement para o status Ocultar e começar a gerar UpdateUIElement. 2) TIP pode terminar UIElement uma vez que o elemento UI não suporta Hide status e Tip chama EndUIElement() para terminá-lo.

Elementos predefinidos da interface do usuário

A lista de candidatos: A lista de candidatos é um dos principais elementos da interface do usuário para entrada de EA. Este elemento da 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 a entrada de teclado chinês. Há um estágio que não pode ser inserido no documento como sequência de composição. Alguns processadores de entrada chineses abrem uma pequena janela de informações de leitura que mostra as informações de leitura, fonética ou digitação.

O fluxograma de UILessMode

Diagrama que mostra o fluxograma U I LessMode.

Depois que a TIP recebe TRUE em *pbShown by ITfUIElementMgr::BeginUIElement, a TIP não precisa chamar UpdateUIElement para o UIElement. Mas o TIP precisa chamar EndUIElement() para que o ITfUIElementMgr e o aplicativo possam acompanhar o status do UIElement. TIP deve chamar UpdateUIElement() depois que BeginUIElement() retorna FALSE em *pbShow. O aplicativo que deseja desenhar a interface do usuário não verifica o conteúdo em BeginUIElement(), ele apenas retorna o status show 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 do UIElement não precisa estar pronto em BeginUIElement().

Diagrama que mostra quando o T I P chama 'ITUIElementMgr::BeginUIElement()' e 'BeginUIElement do UIElementSink da aplicação' é chamado. Diagrama que mostra que a aplicação retorna FALSE em *pbShow. Fluxograma do modo sem interface de utilizador

A lista de candidatos UIElement

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

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