Compartir a través de


Función GetPointerFrameTouchInfo (winuser.h)

Obtiene el marco completo de información basada en entrada táctil para los punteros especificados (de tipo PT_TOUCH) asociados al mensaje actual.

Sintaxis

BOOL GetPointerFrameTouchInfo(
  [in]      UINT32             pointerId,
  [in, out] UINT32             *pointerCount,
  [out]     POINTER_TOUCH_INFO *touchInfo
);

Parámetros

[in] pointerId

Identificador del puntero para el que se va a recuperar información de fotogramas.

[in, out] pointerCount

Puntero a una variable que especifica el recuento de estructuras del búfer al que apunta touchInfo. Si GetPointerFrameTouchInfo se realiza correctamente, pointerCount se actualiza con el recuento total de punteros en el marco.

[out] touchInfo

Dirección de una matriz de estructuras de POINTER_TOUCH_INFO para recibir la información del puntero. Este parámetro puede ser NULL si *pointerCount es cero.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Los dispositivos en modo paralelo pueden notificar la entrada del puntero en fotogramas, es decir, pueden notificar el estado y la posición de todos los punteros de ese dispositivo en un único informe de entrada al sistema. Idealmente, las aplicaciones deben ver todo el marco como una sola entrada a menos que los requisitos específicos de la aplicación dictan lo contrario.

GetPointerFrameTouchInfo recupera todo el marco de entrada del puntero asociado a un mensaje de puntero (de tipo PT_TOUCH). Use GetPointerTouchInfo para recuperar información de un único puntero asociado a un mensaje de puntero.

El marco contiene solo punteros que pertenecen actualmente a la misma ventana que el puntero especificado.

La información devuelta por GetPointerFrameTouchInfo está asociada al mensaje de puntero más reciente recuperado por el subproceso que realiza la llamada. Cuando el siguiente mensaje se recupera mediante el subproceso que realiza la llamada, es posible que la información asociada al mensaje anterior ya no esté disponible.

Si la aplicación no procesa los mensajes de entrada de puntero tan rápido como se generan, es posible que algunos mensajes se fusionen en un mensaje de WM_POINTERUPDATE . Use GetPointerFrameTouchInfoHistory para recuperar el historial de mensajes del mensaje WM_POINTERUPDATE más reciente.

Después de recuperar todo el marco de información, la aplicación puede llamar a la función SkipPointerFrameMessages para omitir los mensajes de puntero restantes asociados a este marco que están pendientes de recuperación. Esto ahorra a la aplicación la sobrecarga de recuperar y procesar los mensajes restantes uno por uno. Sin embargo, la función SkipPointerFrameMessages debe usarse con cuidado y solo cuando el autor de la llamada puede estar seguro de que ninguna otra entidad en el subproceso del autor de la llamada espera ver los mensajes de puntero restantes uno por uno a medida que se recuperan.

Tenga en cuenta que la información recuperada está asociada al marco de puntero recuperado más recientemente por el subproceso que realiza la llamada. Una vez que el subproceso de llamada recupera su siguiente mensaje, es posible que la información asociada al marco de puntero anterior ya no esté disponible.

Si el marco de puntero no contiene punteros adicionales además del puntero especificado, esta función se realiza correctamente y devuelve solo la información del puntero especificado.

Si la información asociada al marco de puntero ya no está disponible, esta función produce un error con el último error establecido en ERROR_NO_DATA.

Si el subproceso que realiza la llamada no posee la ventana a la que se ha entregado el mensaje de puntero, esta función produce el último error establecido en ERROR_ACCESS_DENIED.

Si el puntero especificado no es de tipo PT_TOUCH, esta función produce un error con el último error establecido en ERROR_DATATYPE_MISMATCH.

En el caso de las aplicaciones que tienen áreas cliente y no cliente, el marco de entrada puede incluir datos de cliente y no cliente. Para diferenciar entre los datos de cliente y no cliente, debe realizar pruebas de posicionamiento en la ventana de destino.

Se recomienda lo siguiente si desea filtrar los datos del marco de entrada:

  • Para cada actualización que no incluya un contacto de puntero (un POINTER_FLAG_UPDATE sin POINTER_FLAG_INCONTACT), la prueba de posicionamiento para determinar si la entrada es cliente o no cliente.
  • Para cada nuevo contacto (POINTER_FLAG_DOWN), prueba de posicionamiento para determinar si la entrada es cliente o no cliente y realizar un seguimiento de esta información.
  • Para cada actualización que incluya un contacto de puntero (un POINTER_FLAG_UPDATE con POINTER_FLAG_INCONTACT), use la información de seguimiento para determinar si la entrada es cliente o no cliente.
  • Para cada POINTER_FLAG_UP, use la información de seguimiento para determinar si la entrada es cliente o no cliente y, a continuación, borra este puntero de los datos de seguimiento.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2012 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll
Conjunto de API ext-ms-win-rtcore-ntuser-wmpointer-l1-1-0 (introducido en Windows 10, versión 10.0.14393)

Vea también

Funciones

GetPointerFrameTouchInfoHistory

GetPointerTouchInfo

GetPointerTouchInfoHistory