Función GetPointerFrameInfoHistory (winuser.h)
Obtiene el marco completo de información (incluidos los marcos de entrada fusionados) para los punteros especificados asociados al mensaje actual.
Sintaxis
BOOL GetPointerFrameInfoHistory(
[in] UINT32 pointerId,
[in, out] UINT32 *entriesCount,
[in, out] UINT32 *pointerCount,
[out] POINTER_INFO *pointerInfo
);
Parámetros
[in] pointerId
Identificador del puntero para el que se va a recuperar información de fotogramas.
[in, out] entriesCount
Puntero a una variable que especifica el recuento de filas de la matriz bidimensional a la que apunta pointerInfo. Si GetPointerFrameInfoHistory 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 pointerInfo. Si GetPointerFrameInfoHistory se realiza correctamente, pointerCount se actualiza con el recuento total de punteros en cada fotograma.
[out] pointerInfo
Dirección de una matriz bidimensional de estructuras de POINTER_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_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 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.
La información devuelta por GetPointerFrameInfo 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 GetPointerFrameInfoHistory para recuperar el historial de mensajes (incluidos los marcos de entrada fusionados) 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 en el subproceso del autor de la llamada espera ver los mensajes de puntero restantes uno por uno a medida que se recuperan.
El marco contiene solo 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 GetPointerFrameInfo .
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 *entradasCount que contienen 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 produce un error con el último error establecido en ERROR_NO_DATA.
Si el subproceso de llamada no posee la ventana (donde la entrada se entregó originalmente o dónde se reenviaba el mensaje) a la que se ha entregado el mensaje de puntero, esta función genera el último error establecido en ERROR_ACCESS_DENIED.
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
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) |