Compartir a través de


Función GetPointerFrameTouchInfoHistory (winuser.h)

Obtiene todo el marco de información táctil (incluidos los marcos de entrada combinado) para los punteros especificados (de tipo PT_TOUCH) asociados al mensaje actual.

Sintaxis

BOOL GetPointerFrameTouchInfoHistory(
  [in]      UINT32             pointerId,
  [in, out] UINT32             *entriesCount,
  [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] entriesCount

Puntero a variable que especifica el recuento de filas de la matriz bidimensional a la que apunta touchInfo. Si GetPointerFrameTouchInfoHistory se realiza correctamente,triesCount se actualiza con el recuento total de fotogramas disponibles en el historial.

[in, out] pointerCount

Puntero a una variable que especifica el recuento de columnas de la matriz bidimensional a la que apunta touchInfo. Si GetPointerFrameTouchInfoHistory se realiza correctamente, pointerCount se actualiza con el recuento total de punteros en cada fotograma.

[out] touchInfo

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

Esta matriz se interpreta como POINTER_TOUCH_INFO[*entriesCount][*pointerCount].

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 de 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. Lo ideal es que las aplicaciones vean todo el fotograma como una sola entrada a menos que los requisitos específicos de la aplicación dicten lo contrario.

La información devuelta por GetPointerFrameTouchInfo está asociada al mensaje de puntero (PT_TOUCH) más reciente recuperado por el subproceso que realiza la llamada. Cuando el subproceso que realiza la llamada recupera el siguiente mensaje, 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, algunos mensajes se pueden fusionar en un mensaje de WM_POINTERUPDATE . Use GetPointerFrameTouchInfoHistory para recuperar el historial de mensajes (incluidos los fotogramas de entrada combinado) del mensaje de 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 del subproceso del autor de la llamada espera ver los mensajes de puntero restantes uno por uno a medida que se recuperan.

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

La información recuperada representa una matriz bidimensional con una fila para cada entrada del historial y una columna para cada puntero del marco.

La información recuperada aparece en orden cronológico inverso, con la entrada más reciente en la primera fila de la matriz devuelta. La entrada más reciente es la misma que la devuelta por la función GetPointerFrameTouchInfo .

Si el recuento de filas del búfer proporcionado no es suficiente para contener todas las entradas del historial disponibles, esta función se realiza correctamente con el búfer que contiene las entradas más recientes y *entriesCount que contiene el recuento total de entradas disponibles.

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 genera el último error establecido en ERROR_NO_DATA.

Si el subproceso que realiza la llamada no posee la ventana (donde se entregó originalmente la entrada o donde se reenvía el mensaje) al 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 el último error establecido en ERROR_DATATYPE_MISMATCH.

En el caso de las aplicaciones que tienen áreas cliente y no cliente, la trama de entrada puede incluir datos tanto de cliente como de 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 de la trama de entrada:

  • Para cada actualización que no incluye 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), la 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

   
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 (incluir Windows.h)
Library User32.lib
Archivo DLL User32.dll

Vea también

Funciones

GetPointerFrameTouchInfo

GetPointerTouchInfo

GetPointerTouchInfoHistory