Compartir a través de


Manipulación directa

Las API de manipulación directa permiten crear excelentes experiencias de usuario de movimiento panorámico, zoom y arrastre. Para ello, procesa la entrada táctil en una región o objeto, genera transformaciones de salida y aplica las transformaciones a los elementos de la interfaz de usuario. Puede usar la manipulación directa para optimizar la capacidad de respuesta y reducir la latencia a través del procesamiento de entrada fuera del subproceso, las pruebas de posicionamiento opcionales de entrada fuera del subproceso y la predicción de entrada/salida.

Cualquier aplicación que use Manipulación directa para procesar interacciones táctiles muestra las animaciones de Windows 8 fluidos y los comportamientos de comentarios de interacción que cumplen las directrices para las interacciones comunes del usuario.

Audiencia de los desarrolladores

La API de manipulación directa es para desarrolladores experimentados que conocen C/C++, tienen un conocimiento sólido del modelo de objetos componentes (COM) y están familiarizados con los conceptos de programación de Windows.

Requisitos de tiempo de ejecución

La manipulación directa se introdujo en Windows 8. Se incluye en versiones de 32 y 64 bits.

Por qué usar DirectManipulation

Controla las interacciones de una manera sencilla y coherente

La manipulación directa funciona declarando previamente los comportamientos e interacciones de una región u objeto. Por ejemplo, una página web suele configurarse para el movimiento panorámico y el zoom. En tiempo de ejecución, la entrada se asocia a esta región o objeto a través de una llamada API simple. A partir de este punto, la manipulación directa realiza todo el trabajo pesado de procesamiento de la entrada, la aplicación de restricciones y personalidad, y la generación de las transformaciones de salida.

Creación de aplicaciones táctiles con capacidad de respuesta

Para optimizar la capacidad de respuesta y minimizar la latencia, el procesamiento de manipulación directa se produce en un subproceso independiente del subproceso de la interfaz de usuario. Como resultado, las transformaciones de salida se pueden ejecutar en paralelo a la actividad en el subproceso de la interfaz de usuario. La actividad de subproceso de interfaz de usuario puede incluir lógica de aplicación, representación, diseño y cualquier otra cosa que consuma ciclos en el procesador.

Flexibilidad de implementación

Las interfaces incluidas con Manipulación directa proporcionan compatibilidad completa para el control de entradas, el reconocimiento de interacciones, las notificaciones de comentarios y las actualizaciones de la interfaz de usuario. Las interfaces también incorporan servicios del sistema como DirectComposition.

Conceptos básicos

La implementación de manipulación directa más básica consiste en una ventanilla, contenido e interacciones. La ventanilla es una región que puede recibir y procesar la entrada de las interacciones del usuario. También es la región del contenido que es visible para el usuario final. El contenido es el objeto real que los usuarios finales pueden ver y es lo que mueve o escala en respuesta a una interacción del usuario. Las interacciones del usuario principal (también conocidas como manipulaciones) compatibles con la manipulación directa son el movimiento panorámico y el zoom. Estas interacciones aplican una transformación de traducción o escala al contenido dentro de la ventanilla, respectivamente. Se pueden configurar varias ventanillas (cada una con su propio contenido) en una sola ventana para crear una experiencia de interfaz de usuario enriquecida.

En esta ilustración se muestra una implementación básica de manipulación directa antes y después del movimiento panorámico.

implementación básica de manipulación directa antes y después del movimiento panorámico.

Durante la inicialización de la manipulación directa, se crea una instancia de un objeto DCompDirectManipulationCompositor y está asociado a la manipulación directa. Este objeto es un contenedor alrededor de DirectComposition, que es el compositor del sistema. El objeto es responsable de aplicar las transformaciones de salida e impulsar las actualizaciones visuales.

Un contacto representa un punto táctil identificado por el pointerId proporcionado en el mensaje WM/_POINTERDOWN . Cuando se recibe un mensaje de WM_POINTERDOWN , la aplicación llama a SetContact. La aplicación notifica a la manipulación directa los contactos que se deben controlar y las ventanillas que deben reaccionar a esos contactos. La entrada del teclado y el mouse tienen valores de pointerId especiales para que la manipulación directa pueda controlarlos adecuadamente.

En nuestro caso básico anterior, cuando Se llama SetContact se denominan algunas cosas:

  • Cuando el usuario realiza un movimiento panorámico, se envía un mensaje WM/_POINTERCAPTURECHANGED a la aplicación para notificar que la manipulación directa ha consumido el contacto.
  • Cuando el usuario mueve los movimientos, la ventanilla activa los eventos de actualización que usa el contenedor DirectComposition para controlar las actualizaciones visuales de la pantalla. Para un movimiento panorámico de usuarios en una ventanilla, el contenido aparecerá para moverse sin problemas debajo del contacto.
  • Cuando el usuario eleva el contacto, el usuario ve que el contenido continúa moviéndose a medida que pasa a una animación de inercia, ralentizando gradualmente hasta que llega a su último lugar de descanso.

Procesamiento de la entrada del teclado y del mouse

La manipulación directa permite reenviar manualmente los mensajes de teclado y mouse desde el subproceso de la interfaz de usuario de la aplicación a través de la API ProcessInput para que la manipulación directa pueda controlarlos adecuadamente.

DirectManipulation y HWND

La manipulación directa está asociada a un HWND win32 para recibir y procesar mensajes de entrada de puntero para esa ventana. Como manipulación directa calcula los valores de salida, realiza devoluciones de llamada asincrónicas a los objetos del Modelo de objetos de componentes de manipulación directa (COM) que se implementan en la aplicación. Estas devoluciones de llamada informan a la aplicación sobre la transformación que se aplicó a los objetos . La manipulación directa se activa en el HWND especificado llamando a Activate.

Documentación de soporte