Compartir a través de


Información general sobre el modo UILess

Cómo crear UILessMode

Creando un subproceso sin interfaz de usuario: la aplicación puede crear un subproceso sin interfaz de usuario mediante ITfThreadMgrEx::ActivateEx con ITF_AE_UIELEMENTENABLEDONLY. Cuando ThreadMgr se activa con este indicador, solo los TIP que pueden controlar su elemento de interfaz de usuario se activan en el subproceso. La aplicación necesita implementar la interfaz ITfUIElementSink interfaz y asesorar a la interfaz en el administrador del subproceso. ITfUIElementSink::BeginUIElement se llama cuando TIP muestra su interfaz de usuario. La aplicación puede devolver TRUE en el parámetro pbShow para permitir que TIP muestre la interfaz de usuario original de TIP cuando la aplicación no desea dibujar. Si la aplicación no permite la interfaz de usuario de TIP, puede devolver FALSE en pbShow (consulte los diagramas a continuación). La aplicación puede dibujar la interfaz de usuario por sí misma obteniendo información del parámetro pElement. Podría ser la lista de candidatos, el elemento de la barra de idioma o la interfaz de usuario personalizada de TIP. La aplicación puede conocer el tipo de interfaz de usuario mediante la interfaz QIing ITfUIElement. Cuando se cambia la interfaz de usuario, se llama a ITfUIElementSink::UpdateUIElement. La aplicación puede comparar el GUID de pElement->GetGUID() para saber si la aplicación dibuja actualmente el elemento.

Crear un TIP sin reconocimiento de la interfaz de usuario: TIP debe admitir el modo sin interfaz de usuario si quiere ejecutarse en la aplicación que no permite la interfaz de usuario de TIP, como aplicaciones de juego o aplicaciones de pantalla completa. Para ser consciente sin interfaz de usuario, TIP debe implementar la interfaz ITfTextInputProcessorEx. Si no se implementa esta interfaz, TIP no se activará en el subproceso de modo sin interfaz de usuario. Además, TIP debe llamar a ITFUIElementMgr::BeginUIElement antes de que muestre una interfaz de usuario visible en la pantalla. Este método realiza una llamada a ITfUIElementSink para notificar a la aplicación. Y la aplicación decidirá si se puede mostrar o no. Cuando TIP llama a BeginUIElement(), TIP debe tener la interfaz ITfUIElement para la interfaz de usuario correspondiente. La aplicación hará QI en la interfaz para obtener otra interfaz específica de la interfaz de usuario y recuperar más información para dibujar la interfaz de usuario El sistema predefine ITfCandidateListUIElement e ITfReadingInformationUIElement para TIP. Cuando TIP quiere mostrar la lista de candidatos en subproceso de modo sin interfaz de usuario, TIP debe crear una instancia de la interfaz ITfCandidateListUIElement y llamar a ITFUIElementMgr::BeginUIElement. Cuando se llama a ITfTextInputProcessorEx::ActivateEx, TIP ya sabe que el subproceso es sin interfaz de usuario, por lo que puede eliminar la UI personalizada adicional. Sin embargo, claro que puede implementar su propia interfaz desde la que se puede hacer QI e intentar realizar una notificación. De este modo, TIP y la aplicación ITfUIElement pueden tener una negociación para la interfaz de usuario personalizada TIP.

UIElement compatible con TIP

El TIP que admite UIElement debe clasificarse por GUID_TFCAT_TIPCAP_UIELEMENTENABLED. El TIP en GUID_TFCAT_TIPCAP_UIELEMENTENABLED debe usar ITfUIElementMgr para mostrar cualquier interfaz de usuario para que la aplicación pueda controlar la visibilidad de la interfaz de usuario.

Mostrar u ocultar el estado de UIElement: mostrar u ocultar el estado indicado por el método ITfUIElement::Show o ITfUIElement::IsShown es el estado visible real. No está relacionado con la disponibilidad de UIElement. UIElement debería estar siempre disponible cuando se muestra el estado. Mostrar el estado se puede controlar desde la aplicación. La aplicación puede pasar repentinamente al modo UILess y empezar a dibujar una interfaz de usuario por sí misma, llamando a ITfUIElement::Show con FALSE para ocultar toda la interfaz de usuario de TIP. Después, TIP puede optar por una de las siguientes opciones. 1) TIP puede cambiar UIElement al estado Ocultar y empezar a generar UpdateUIElement. 2) TIP puede finalizar UIElement, puesto que el elemento de la interfaz de usuario no admite el estado Ocultar y TIP llama a EndUIElement() para finalizarlo.

Elementos de la interfaz de usuario predefinidos

Lista de candidatos: la lista de candidatos es uno de los elementos principales de la interfaz de usuario para la entrada de EA. Este elemento de la interfaz de usuario proporciona la lista de candidatos y el número correspondiente de las cadenas candidatas para dibujar.

Ventana de información de lectura: la ventana de información de lectura es común para la entrada del teclado chino. Tiene la fase que no se puede insertar en el documento como cadena de composición. Algunos procesadores de entrada chinos abren una pequeña ventana de información de lectura que muestra información de lectura, de escritura o fonética.

Diagrama de flujo de UILessMode

Diagrama que muestra el diagrama de flujo de UILessMode.

Una vez que TIP recibe TRUE en *pbShown de ITfUIElementMgr::BeginUIElement, TIP no tiene que llamar a UpdateUIElement para UIElement. Pero TIP debe llamar a EndUIElement() para que ITfUIElementMgr y la aplicación puedan realizar un seguimiento del estado de UIElement. TIP debe llamar a UpdateUIElement() una vez que BeginUIElement() devuelva FALSE en *pbShow. La aplicación que quiere dibujar la interfaz de usuario no comprueba el contenido en BeginUIElement(), simplemente vuelve a mostrar el estado en BeginUIElement() y comienza a comprobar el contenido en UpdateUIElement(). Por ejemplo, la marca de actualización de la lista de candidatos UIElement tiene todos los bits en la primera UpdateUIElement(). Esto significa que el contenido de UIElement no tiene que estar listo en BeginUIElement().

Diagrama que muestra cuando TIP llama a 'ITUIElementMgr::BeginUIElement()' y se llama a 'BeginUIElement of Application's UIElementSink'.Diagrama que muestra que la aplicación devuelve FALSE en *pbShow.Diagrama de flujo de uilessmode

Lista de candidatos UIElement

Acerca de PageIndex: la aplicación que dibuja la lista de candidatos calculará el número de cadenas por página cuando se cambie el contenido de la lista (se establece TF_CLUIE_STRING). No es recomendable cambiar el índice de página mientras la lista candidata está disponible para el modo UILess. Esto significa que la lista de candidatos de TIP debería comportarse como paginación en lugar de desplazarse cuando la selección se mueve a la página siguiente. Si el desplazamiento se produce durante los movimientos de selección, se modifica el índice de página y la aplicación debe volver a calcularlo. Es posible que TIP no espere el resultado.

Sin selección: ITfCandidateListUIElement::GetSelection devuelve S_FALSE, si la lista de candidatos no tiene ninguna selección. El valor devuelto del primer parámetro no es válido.