TextInputPanel para usuarios de PenInputPanel
La versión de Windows Vista incluye un nuevo objeto de programación para el Panel de entrada de pc tableta que proporciona una nueva gama de posibilidades para cómo una aplicación puede usar e interactuar con el Panel de entrada. Por primera vez, los desarrolladores de aplicaciones pueden colocar el icono del panel de entrada de In-Place para alinearse con un cuadro de texto o colocarlo en la esquina de una superficie de entrada manuscrita del cliente para ofrecer acceso a un modo de entrada alternativo. Los desarrolladores tienen el mismo control sobre el posicionamiento una vez que el icono del panel de entrada se expande en el panel de entrada de In-Place. Esto permite garantizar que el panel de entrada de In-Place nunca se superponga con elementos clave de la interfaz de usuario en el diseño de una aplicación o incluso para volver a distribuir la interfaz de usuario de una aplicación para hacer espacio para el panel de entrada de In-Place y, a continuación, colocarlo en el espacio reservado. El nuevo modelo de programación incluye compatibilidad con algo más que solo colocar, pero los desarrolladores también pueden personalizar el área de entrada, el modo de corrección y muchas otras propiedades del Panel de entrada para adaptar la experiencia de entrada de texto en una aplicación. Por último, por primera vez es posible que una aplicación reciba la entrada manuscrita del usuario, además del texto reconocido, asociado a las inserciones de texto del Panel de entrada. Esto permite nuevos escenarios de aplicación, incluida la entrada de lápiz en los registros de seguimiento de cambios y permite a los usuarios editar o ver la entrada de lápiz en la aplicación. Estas nuevas características de programación son el resultado directo de los comentarios que Microsoft ha recibido sobre la historia del desarrollador del Panel de entrada y representa el primer paso hacia una integración más estrecha de las aplicaciones y el Panel de entrada.
Para proporcionar este modelo de programación de panel de entrada enriquecido, el mecanismo existente para interactuar mediante programación con el Panel de entrada, el objeto PenInputPanel , está en desuso y reemplazado por el nuevo objeto TextInputPanel . Además de proporcionar nuevas características de programación, el objeto TextInputPanel también proporciona cerca de todas las funcionalidades de programación del objeto PenInputPanel . El objeto TextInputPanel se incluye tanto en Windows Vista como en el Kit para desarrolladores de software de Windows Vista. El objeto TextInputPanel solo es compatible con el Panel de entrada de Windows Vista y no se puede usar con el Service Pack 2 de Windows XP o con un panel de entrada anterior. La aplicación que se escribió anteriormente para usar el objeto PenInputPanel seguirá funcionando con el Panel de entrada de Windows Vista, sin embargo, al escribir nuevas aplicaciones de tableta, se recomienda encarecidamente usar el nuevo objeto TextInputPanel en lugar del objeto PenInputPanel en desuso.
Cada una de las opciones de programación del objeto TextInputPanel se puede aplicar por campo de texto. Esto se logra adjuntando una instancia del objeto TextInputPanel mediante la propiedad AttachedEditWindow . La propiedad debe establecerse en el identificador de ventana del campo de texto.
Nota
: varias de las propiedades y los métodos que se describen a continuación se aplican cuando el Panel de entrada está en modo de interacción local y no cuando el Panel de entrada está en el modo de interacción flotante o acoplada. El modo de interacción local es el comportamiento del Panel de entrada en el que colocar el foco en un campo editable hace que el icono del panel de entrada aparezca junto al campo y pulsar en el icono del panel de entrada hace que el Panel de entrada se expanda. Los métodos y propiedades que solo se aplican cuando el Panel de entrada está en el modo de interacción local, todos contienen "InPlace" en el nombre del método o propiedad.
Control del icono del panel de entrada y visibilidad del panel de entrada
El primer aspecto del Panel de entrada sobre el que los desarrolladores de aplicaciones tienen más control en Windows Vista es su visibilidad. Con el objeto TextInputPanel es posible controlar la visibilidad del panel de entrada de In-Place de tres maneras. Con una combinación de propiedades y métodos, una aplicación puede determinar si se muestra el panel de entrada de In-Place, cuando se muestra el panel de entrada de In-Place y si aparece primero como icono del panel de entrada o se muestra inmediatamente expandido. Al combinar estas técnicas para controlar la visibilidad con las técnicas para controlar el posicionamiento descrito en la siguiente sección, es posible que los desarrolladores de aplicaciones creen puntos de inicio personalizados y flujos de trabajo personalizados mediante el panel de entrada de In-Place en una aplicación.
Nota
Las propiedades y los métodos descritos en esta sección solo se aplican cuando el Panel de entrada está en el modo de interacción In-Place.
En primer lugar y lo más básicamente, es posible evitar que el panel de entrada In-Place y el icono del panel de entrada aparezcan siempre estableciendo la propiedad InPlaceVisibleOnFocus en false. Si se establece en true, se revierte al valor predeterminado del sistema de aparecer cuando sea posible, siempre que el usuario o la directiva de grupo no la haya deshabilitado. Esta opción es útil para las aplicaciones que incluyen soluciones de entrada de texto personalizadas como alternativa al Panel de entrada.
En segundo lugar, al establecer la propiedad DefaultInPlaceState , un desarrollador puede especificar en qué estado local, según lo especificado por la enumeración InPlaceState , el panel de entrada de In-Place aparece cuando el foco se coloca en un campo de texto. El valor predeterminado del sistema es que el panel de entrada de In-Place aparezca en estado de desplazamiento, a menos que el Panel de entrada ya esté visible en el estado expandido, en cuyo caso el Panel de entrada permanece expandido. Establecer la propiedad DefaultInPlaceState en InPlaceState_Expanded hace que el panel de entrada de In-Place aparezca siempre expandido, en lugar del icono del panel de entrada que aparece primero y, a continuación, exigir al usuario que pulse el icono del panel de entrada antes de que se expanda el Panel de entrada. Las otras dos opciones son InPlaceState_Auto, que es el comportamiento predeterminado del sistema y InPlaceState_HoverTarget que siempre hace que aparezca el icono del panel de entrada. La capacidad de especificar que el panel de entrada de In-Place siempre aparezca expandido es nuevo con el objeto TextInputPanel y no es posible usar el objeto PenInputPanel . En la ilustración siguiente se muestra el icono In-Place Panel de entrada y los estados expandidos del panel.
Además de poder controlar el estado en contexto, también es posible que un desarrollador determine el estado en contexto en un momento dado obteniendo la propiedad CurrentInPlaceState . CurrentInPlaceState es igual a DefaultInPlaceState cuando el Panel de entrada no está visible, excepto cuando DefaultInPlaceState es InPlaceState_Auto en cuyo caso CurrentInPlaceState se convierte en InPlaceState_HoverTarget. Los eventos InPlaceVisibilityChanging / InPlaceVisibilityChanged se pueden usar para realizar un seguimiento del estado de visibilidad del panel de entrada de In-Place.
Por último, un desarrollador puede forzar que el panel de entrada de In-Place oculte o muestre mediante el método SetInPlaceVisibility . Si el desarrollador ha establecido previamente la propiedad DefaultInPlaceState , el Panel de entrada aparece en el estado especificado cuando se fuerza a mostrar. Una aplicación solo puede ocultar o mostrar el panel de entrada In-Place cuando el foco está actualmente en la ventana al que está asociado el objeto TextInputPanel y cuando el usuario no tiene el Panel de entrada abierto en otro modo de interacción, como acoplado o flotante. La capacidad de forzar al panel de entrada de In-Place ocultar o mostrar también es nueva con el objeto TextInputPanel y no es posible usar el objeto PenInputPanel .
Estas opciones proporcionan a los desarrolladores de aplicaciones un control preciso sobre cuándo aparece el panel de entrada de In-Place y en qué estado. Al personalizar el estado local predeterminado y controlar la visibilidad local independientemente de los cambios de foco que un desarrollador de aplicaciones puede crear un flujo de trabajo personalizado cuando el Panel de entrada responde a la configuración de la aplicación o a la entrada del usuario en una aplicación.
Posición absoluta del icono del panel de entrada y panel de entrada
Posiblemente la nueva característica más atractiva que se encuentra en el objeto TextInputPanel es la posición absoluta del panel de entrada de In-Place. Con esta nueva funcionalidad, un desarrollador de aplicaciones puede asegurarse de que el panel de entrada de In-Place no se superponga con uno o varios elementos visuales clave en un diseño de aplicación. Con el objeto PenInputPanel era posible colocar el panel de entrada In-Place en relación con un campo de texto basado en un desplazamiento, sin embargo, el Panel de entrada se ajustaría para mantenerse en la pantalla. Por primera vez en Vista, una aplicación puede colocar el panel de entrada In-Place en una posición absoluta mediante coordenadas de pantalla. Además, la responsabilidad de mantener el Panel de entrada en la pantalla se deja al desarrollador de la aplicación, por lo que se elimina la posibilidad de que el Panel de entrada se cambie automáticamente y aparentemente aleatoriamente.
Nota
Las propiedades y los métodos descritos en esta sección solo se aplican cuando el Panel de entrada está en el modo de interacción In-Place.
Los dos métodos principales necesarios para colocar absolutamente el panel de entrada de In-Place son SetInPlacePosition y SetInPlaceHoverTargetPosition. La primera se usa para especificar la ubicación del panel de entrada de In-Place y la segunda se usa para especificar la ubicación del icono del panel de entrada para el panel de entrada de In-Place Panel de entrada. Si una aplicación elige establecer solo la ubicación icono del panel de entrada y no la ubicación del panel de entrada de In-Place, el panel de entrada de In-Place aparece en la ubicación predeterminada determinada por el sistema. Del mismo modo, si una aplicación cambia la posición del panel de entrada In-Place pero no el icono del panel de entrada, el icono del panel de entrada aparece en la ubicación predeterminada. La ubicación se especifica en coordenadas de pantalla. El punto real que se coloca es la esquina superior izquierda del icono del panel de entrada o el panel de entrada sin ningún comb de corrección expandido. Cuando se expande el comb de corrección, el punto que se coloca no cambia. (Vea la figura 2 a continuación) No hay restricciones en los lugares en los que el panel de entrada de In-Place y el icono del panel de entrada de In-Place pueden ser lugares y es responsabilidad de las aplicaciones que llaman a estos métodos para mantenerlos en la pantalla. Ambos métodos son sincrónicos, lo que significa que el posicionamiento se produce antes de que el método devuelva. En caso de que el Panel de entrada ya esté abierto en el modo de interacción flotante o acoplado, se produce un error al intentar colocar el panel de entrada de In-Place o el icono del panel de entrada de In-Place. Además, se produce un error en los métodos si la ventana adjunta al objeto TextInputPanel no tiene actualmente el foco.
Una llamada a SetInPlacePosition o SetInPlaceHoverTargetPosition no hace automáticamente que el In-Place panel de entrada o el icono del panel de entrada se muestren automáticamente, simplemente establece la posición para la próxima vez que se muestren. Llamar a SetInPlaceVisibility se puede usar para forzar que se muestren inmediatamente.
Al colocar el In-Place panel de entrada calculando si se apagará la pantalla puede ser un poco complicado. Para facilitar este proceso, hay varias propiedades del objeto TextInputPanel que se pueden usar para simplificar este proceso. Juntas estas propiedades y eventos se pueden usar para determinar el tamaño exacto del panel de entrada de In-Place en todos sus estados:
- InPlaceBoundingRectangle: esta propiedad proporciona el rectángulo delimitador para el panel de entrada de In-Place cuando se muestra el área de entrada más grande del idioma de entrada actual. Si el Panel de escritura o el Panel de caracteres se determinan en el área de entrada más grande, se incluye el alto del botón Insertar. No incluye el alto del comb de corrección. Cuando crece automáticamente el panel de entrada de In-Place, se desencadena el par de eventos InPlaceSizeChanging / InPlaceSizeChanged y el valor de esta propiedad se actualiza para incluir el área de escritura adicional o la línea de escritura.
- PopUpCorrectionHeight: esta propiedad especifica el alto del comb de corrección posterior a la inserción cuando se coloca encima del panel de entrada. Para obtener el alto completo del panel de entrada de In-Place con el comb de corrección posterior a la inserción, agregue el alto de InPlaceBoundingRectangle al PopUpCorrectionHeight.
Como alternativa más sencilla a establecer la posición absoluta del panel de entrada de In-Place y el icono del panel de entrada, una aplicación solo puede especificar si el panel de entrada de In-Place aparece de forma predeterminada encima o por debajo de un campo de entrada de texto. De este modo, es posible evitar que los elementos superpuestos en el diseño de la aplicación se controlen de forma más flexible. Para ello, la aplicación establece PreferredInPlaceDirectionen InPlaceDirection_Bottom o InPlaceDirection_Top. La propiedad es una preferencia porque el panel de entrada de In-Place invalida la preferencia establecida por la aplicación cuando sea necesario para mantener el Panel de entrada en la pantalla. El valor predeterminado del sistema es colocar el panel de entrada In-Place debajo de un campo de texto siempre que sea posible y, de lo contrario, colocarlo encima. Al establecer PreferredInPlaceDirectionen InPlaceDirection_Auto restaura el valor predeterminado del sistema.
Juntos las propiedades, métodos y eventos del objeto TextInputPanel proporcionan a los desarrolladores el control necesario sobre el panel de entrada de In-Place para poder colocar inteligentemente el panel de entrada In-Place y el icono del panel de entrada en un diseño de aplicación para que no interrumpan el flujo de diseño y, en algunos casos, pueden aparecer integrados. Este nuevo nivel de control es un gran éxito para el diseño de aplicaciones tablet.
Acceso a las tres áreas del panel de entrada: Escribir panel, panel de caracteres y teclado
El Panel de entrada tiene tres áreas de entrada, el Panel de escritura, el Panel de caracteres y el Teclado. Con el objeto TextInputPanel , una aplicación puede especificar el área de entrada predeterminada que se muestra al usuario cuando se abre el Panel de entrada. La razón principal para que una aplicación lo haga es emparejar el área de entrada con el tipo de entrada de un campo específico. Por ejemplo, el Panel de escritura es probablemente más adecuado para rellenar un campo de comentarios, pero el Teclado puede ser más cómodo para escribir un número de serie de producto que contenga números y letras. Para especificar el área de entrada predeterminada, una aplicación establece la propiedad DefaultInputArea en una de las tres áreas de entrada definidas por la enumeración PanelInputArea . En la ilustración siguiente se muestran las tres áreas de entrada.
El área de entrada predeterminada del sistema es el Panel de escritura para inglés, francés, alemán, español, italiano, portugués, neerlandés y el resto de idiomas de entrada latino. Para los idiomas de entrada de Asia Oriental, incluidos japonés, chino y coreano, el área de entrada predeterminada es el Panel de caracteres. Sin embargo, cuando el usuario cambia el área de entrada, invalida el área de entrada predeterminada para el idioma de entrada actual y se almacena como el nuevo valor predeterminado para ese idioma de entrada. El teclado es el área de entrada predeterminada para los campos de contraseña, independientemente del idioma de entrada, a menos que la directiva de usuario o grupo haya deshabilitado la seguridad de contraseñas. En todos los casos, al establecer el área del panel de entrada predeterminada mediante programación, se invalida el valor predeterminado del sistema, a menos que el campo actual sea un campo de contraseña o el reconocedor de escritura a mano para el idioma de entrada actual no admite el área de entrada seleccionada mediante programación. Al establecer la propiedad DefaultInputAreaen InPlaceDirection_Auto restaura la configuración predeterminada del sistema.
Independientemente de si el área predeterminada del panel de entrada se ha establecido mediante programación, o no, el usuario tiene la opción de cambiar el área del panel de entrada actual una vez abierto el Panel de entrada. Una vez que el usuario ha cambiado el área de entrada actual, la selección del usuario persiste hasta que el Panel de entrada se cierra o el usuario vuelve a cambiar la selección. Después de que el Panel de entrada se cierre y vuelva a abrir, el área de entrada predeterminada se vuelve a mostrar mediante programación.
Dado que el área del panel de entrada actual puede ser diferente que el área del panel de entrada predeterminada, una aplicación puede consultar la propiedad CurrentInputArea para determinar qué área de entrada está visible actualmente. Si el Panel de entrada no está visible actualmente, el área de entrada actual es igual al área de entrada predeterminada. La propiedad CurrentInputArea nunca es igual a PanelInputArea_Auto. Si DefaultInputArea es igual a PanelInputArea_Auto, currentInputArea es igual al último área de entrada que se muestra o el valor predeterminado del sistema para el idioma de entrada actual si nunca se ha mostrado el Panel de entrada.
La principal diferencia entre la compatibilidad del área de entrada encontrada en el objeto PenInputPanel y la del objeto TextInputPanel es el hecho de que la aplicación ahora tiene la opción de establecer el área de entrada predeterminada en el Panel de caracteres, además del Panel de escritura y el Teclado.
Con las propiedades anteriores, una aplicación puede controlar el área de entrada del Panel de entrada que se muestra en distintos campos y optimizar la experiencia de entrada de texto del usuario. Además, la aplicación puede mantener el conocimiento del área de entrada actual y tomar decisiones condicionales según el área de entrada más adecuada para la tarea del usuario actual.
Información detallada sobre el modo de interacción del panel de entrada
Además de poder detectar el área de entrada actual del Panel de entrada, también es posible detectar el modo de interacción actual: En contexto, acoplado o flotante. Puede ser importante que la aplicación conozca el modo de interacción actual para comprender cómo interactúa el usuario con la aplicación o porque algunos métodos y propiedades del objeto TextInputPanel solo se aplican al modo de interacción In-Place. Por ejemplo, en la aplicación, los elementos existentes de la interfaz de usuario y, a continuación, colocan el panel de entrada In-Place en un área en blanco en sus interfaces de usuario deben comprobar para asegurarse de que el modo de interacción actual está en contexto antes de realizar ajustes.
La propiedad CurrentInteractionMode , del objeto TextInputPanel , almacena el modo de interacción actual elegido por el usuario. Los modos posibles se definen mediante la enumeración InteractionMode como:
InteractionMode_InPlace: en el panel de entrada del modo de interacción de In-Place aparece junto al campo de entrada de texto que actualmente tiene el foco. De forma predeterminada, el icono del panel de entrada de In-Place aparece cuando se coloca un punto de inserción en un campo de entrada de texto. Pulsar en el icono del panel de entrada hace que el Panel de entrada se expanda. El panel de entrada de In-Place solo es visible cuando un punto de inserción está en un campo editable.
InteractionMode_Floating: el modo de interacción flotante es similar al modo de interacción InPlace, excepto que no está vinculado a un punto de inserción. El panel de entrada flotante se abre pulsando en la pestaña Panel de entrada que aparece de forma predeterminada en el borde izquierdo de la pantalla. El usuario puede arrastrar y cambiar la posición de la pestaña Panel de entrada flotante y panel de entrada. En el modo flotante, el posicionamiento y el control del Panel de entrada se deja completamente al usuario.
InteractionMode_DockedTop: en el panel de entrada del modo de interacción de Docked-Top aparece en la parte superior de la pantalla y se cambia el tamaño del escritorio activo, por lo que el Panel de entrada no se superpone con ninguna otra ventana o elemento de la interfaz de usuario. En el modo acoplado, el Panel de entrada no se puede arrastrar ni mover.
InteractionMode_DockedBottom: el modo de interacción de Docked-Bottom es el mismo que el modo de Docked-Top excepto el Panel de entrada aparece en la parte inferior de la pantalla.
Cuando el Panel de entrada no está visible, el modo de interacción actual es En contexto.
La publicación del modelo de interacción actual es otra forma en que el objeto TextInputPanel proporciona más información sobre el estado del Panel de entrada que ha estado disponible en cualquier versión anterior.
Información detallada sobre el modo de corrección del Panel de entrada
El aspecto final del Panel de entrada del que el objeto TextInputPanel proporciona información detallada sobre y el control de es el modo de corrección. Conocer el modo de corrección ayuda a las aplicaciones a determinar el tamaño actual del Panel de entrada. Controlar cómo se expande la corrección posterior a la inserción en una aplicación es una manera de personalizar la experiencia de corrección en una aplicación.
Hay dos modos básicos en los que puede aparecer el comb de corrección: inserción previa y posterior a la inserción. El comb de corrección de inserción previa se usa para corregir el texto antes de insertarlo en una aplicación. Se activa pulsando en el texto pendiente que aparece debajo de la línea de base en el Panel de escritura como las entradas de lápiz del usuario. El comb de corrección posterior a la inserción se usa para corregir el texto después de insertarlo en una aplicación. Se activa colocando el punto de inserción en o seleccionando texto que se insertó anteriormente. Además de los dos modos básicos, hay varias variaciones sobre cómo puede aparecer el comb de corrección posterior a la inserción. En primer lugar, puede aparecer por encima o por debajo del Panel de entrada y, en segundo lugar, puede aparecer contraído o expandido. En el estado contraído, el comb de corrección posterior a la inserción solo muestra una lista de alternativas. En el estado expandido, incluye las alternativas y un área para volver a escribir la palabra.
La propiedad CurrentCorrectionMode permite a una aplicación determinar la configuración actual del comb de corrección. Los valores posibles de esta propiedad definidos por las enumeraciones CorrectionMode son: NotVisible, PreInsertion, PostInsertionCollapsed y PostInsertionExpanded. Cuando no hay ningún panel de entrada o comb de corrección visible, CurrentCorrectionMode es NotVisible.
De forma predeterminada, el sistema muestra el comb posterior a la inserción expandido cuando selecciona texto que se puede corregir y lo muestra contraído cuando el punto de inserción se coloca en texto que se puede corregir. Una aplicación puede especificar dónde siempre se debe mostrar el comb de corrección posterior a la inserción expandido estableciendo la propiedad ExpandPostInsertionCorrection en true. El valor predeterminado del sistema es false. Cuando la propiedad ExpandPostInsertionCorrection se usa junto con la interfaz IHandWrittenTextInsertion , un desarrollador de aplicaciones puede agregar de forma barata compatibilidad de corrección a las aplicaciones que no la obtenerían automáticamente.
El seguimiento y el control del estado de corrección del Panel de entrada es una de las muchas características nuevas del objeto TextInputPanel que hacen posible la integración de aplicaciones y panel de entrada más estrictos.
Notificación de eventos antes y después de que se produzca el evento
Otro aspecto de la programación del Panel de entrada que se ha mejorado considerablemente en el objeto TextInputPanel es el modelo de eventos. Ahora, en lugar de generar solo eventos que indican un cambio en el estado del Panel de entrada después de que se haya producido el cambio, hay eventos independientes enviados antes y después de que se produzca el cambio. Los eventos que indican el inicio de un evento contienen verbos tensos presentes como "Changing" o "Inserting", mientras que los eventos que indican la conclusión de un evento contienen verbos pasados como "Changed" o "Inserted".
Este modelo de eventos permite que una aplicación reaccione a un cambio antes o cuando se produce. El Panel de entrada no puede continuar con un cambio o reanudarse después del cambio hasta que se hayan completado los controladores de eventos para todos los eventos. Estos eventos son sincrónicos y, de esta manera, una aplicación puede retrasar un cambio hasta que haya terminado de reaccionar. Sin embargo, el momento en que un controlador de eventos está ejecutando el Panel de entrada deja de estar accesible para el usuario y puede aparecer bloqueado, por lo tanto es importante que el controlador de eventos funcione bien. Sin embargo, no es posible que una aplicación impida o cancele un evento. Todos los parámetros de evento son de solo lectura. A continuación se muestra una descripción de los seis pares de eventos del objeto TextInputPanel :
- InPlaceStateChanging / InPlaceStateChanged: notificación de que el estado en contexto está a punto de o que acaba de cambiar del puntero al ratón a expandido o viceversa. Los parámetros son el estado nuevo y antiguo en contexto. Coincidencias con un cambio en el valor de la propiedad CurrentInPlaceState .
- InPlaceSizeChanging / InPlaceSizeChanged: se indica cuando el tamaño del panel de entrada de In-Place está a punto de cambiar o ha cambiado debido a un cambio de tamaño del usuario, crecimiento automático o un cambio en el área de entrada. Los parámetros son el rectángulo delimitador nuevo y antiguo. Coincidencias con un cambio en el valor de la propiedad InPlaceBoundingRectangle .
- InputAreaChanging / InputAreaChanged: informa cuando el área de entrada del Panel de entrada está a punto de cambiar o ha cambiado de a la otra de las tres posibles áreas de entrada: Escribir panel, Panel de caracteres o Teclado. Los parámetros son el área de entrada nueva y antigua. Coincide con un cambio en el valor de la propiedad CurrentInputArea
- CorrectionModeChanging / CorrectionModeChanged: notificación de que el modo de corrección está a punto de cambiar o ha cambiado. Los modos de corrección posibles son: no visible, inserción previa, post-inserción contraído y posterior a la inserción expandida. Los parámetros son el modo de corrección nuevo y antiguo. Coincide con un cambio en el valor de la propiedad CurrentCorrectionMode .
- InPlaceVisibilityChanging / InPlaceVisibilityChanged: indica cuándo la visibilidad del panel de entrada de In-Place está a punto de cambiar o ha cambiado. Los parámetros son la visibilidad nueva y antigua. Una nueva visibilidad de false significa que el panel de entrada de In-Place no está abierto, pero no impide que el Panel de entrada sea visible en el modo de interacción flotante o acoplada.
- TextInserting / TextInserted: indica cuándo se va a insertar texto o se ha insertado desde el Panel de entrada. Parameter es una matriz de objetos InkDisp , cada uno de los cuales contiene una línea de la entrada de lápiz y el texto que componen la inserción. Obtenga más información sobre este evento en la sección siguiente.
Estos eventos proporcionan a las aplicaciones información esencial sobre los cambios en el Panel de entrada y les permiten reaccionar en consecuencia. De nuevo, el cambio en el modelo de eventos del Panel de entrada representa un paso hacia una mejor interacción entre las aplicaciones y el Panel de entrada.
Compatibilidad con la recopilación de la entrada manuscrita y el texto introducidos en el panel de entrada
Por último, pero sin duda no menos importante, una característica muy eficaz del objeto TextInputPanel es la capacidad de obtener el objeto de entrada de lápiz para el texto escrito a través del Panel de entrada fuera del Panel de entrada en el momento en que el texto se inserta en una aplicación. Se trata de una característica solicitada a menudo para el seguimiento de cambios y el mantenimiento de registros. También permite a las aplicaciones usar la entrada de lápiz en su interfaz de usuario como un elemento estático o con una superficie de entrada manuscrita personalizada.
Para recibir el objeto InkDisp para el texto escrito a través del Panel de entrada, una aplicación debe registrarse para recibir los eventos TextInserting o TextInserted generados por el objeto TextInputPanel . El evento TextInserting se desencadena inmediatamente antes de que el texto se inserte desde el Panel de entrada en una aplicación y el texto no se inserta hasta que se completen todos los controladores de eventos. El evento TextInserted se activa inmediatamente después de insertar la prueba. El único parámetro para el evento TextInserting y TextInserted es una matriz de objetos InkDisp que incluye un objeto InkDisp para cada línea de texto insertado desde el Panel de entrada. Nota: El Panel de entrada está inactivo mientras se ejecutan los controladores de eventos y puede aparecer bloqueado al usuario, por lo tanto, es importante que estos controladores de eventos sean ligeros y asegúrese de que se ejecutan rápidamente. Además, una aplicación no debe crear un controlador para este evento a menos que tenga un uso específico para la información, ya que hay un costo de rendimiento asociado a hacerlo. El Panel de entrada solo calcula las referencias de los datos de entrada de lápiz si hay una aplicación que solicita los datos; de lo contrario, el Panel de entrada puede omitir esta operación costosa. Los parámetros de los eventos TextInserting y TextInserted son de solo lectura, lo que significa que no es posible que las aplicaciones cambien el texto insertado antes de insertarlo en la aplicación.
Las posibilidades de lo que las aplicaciones pueden hacer con esta nueva funcionalidad son amplias y no puede ser más fácil de usar. Permitir que las aplicaciones recopilen texto y entrada manuscrita reconocidas a través del Panel de entrada es simplemente otra manera en que la historia del desarrollador del Panel de entrada se mejora en Windows Vista.
Conclusión
En general, la historia de programación del panel de entrada del pc tableta se ha mejorado considerablemente con la introducción del objeto TextInputPanel en Windows Vista. Mediante el uso del objeto TextInputPanel , los desarrolladores de aplicaciones tienen un mayor control y más información sobre el panel de entrada de estado en la versión anterior. Como resultado, se recomienda encarecidamente a los desarrolladores de aplicaciones que compilan nuevas aplicaciones tablet PC o actualizan aplicaciones existentes usar el objeto TextInputPanel en lugar del objeto PenInputPanel ahora en desuso. Además, la compatibilidad con nuevas características, como el posicionamiento absoluto del panel de entrada y el icono del panel de entrada, y la posibilidad de que la aplicación reciba texto reconocedor y entrada manuscrita a través del Panel de entrada habilite nuevas funcionalidades y escenarios de la aplicación. La inclusión de estas características y otras se encuentran en respuesta directa a los comentarios de los desarrolladores y marca los primeros pasos para la integración completa del Panel de entrada con aplicaciones tablet PC. En última instancia, la expansión de la funcionalidad de la aplicación tablet PC es una gran victoria para los desarrolladores de aplicaciones y la plataforma tablet PC.