Partager via


POINTER_INFO structure (winuser.h)

Contient des informations de pointeur de base communes à tous les types de pointeurs. Les applications peuvent récupérer ces informations à l’aide des fonctions GetPointerInfo, GetPointerFrameInfo, GetPointerInfoHistory et GetPointerFrameInfoHistory .

Syntaxe

typedef struct tagPOINTER_INFO {
  POINTER_INPUT_TYPE         pointerType;
  UINT32                     pointerId;
  UINT32                     frameId;
  POINTER_FLAGS              pointerFlags;
  HANDLE                     sourceDevice;
  HWND                       hwndTarget;
  POINT                      ptPixelLocation;
  POINT                      ptHimetricLocation;
  POINT                      ptPixelLocationRaw;
  POINT                      ptHimetricLocationRaw;
  DWORD                      dwTime;
  UINT32                     historyCount;
  INT32                      InputData;
  DWORD                      dwKeyStates;
  UINT64                     PerformanceCount;
  POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;

Membres

pointerType

Type : POINTER_INPUT_TYPE

Valeur de l’énumération POINTER_INPUT_TYPE qui spécifie le type de pointeur.

pointerId

Type : UINT32

Identificateur qui identifie de manière unique un pointeur pendant sa durée de vie. Un pointeur apparaît lorsqu’il est détecté pour la première fois et termine son existence lorsqu’il sort de la plage de détection. Notez que si une entité physique (doigt ou stylet) sort de la plage de détection et revient à être détectée à nouveau, elle est traitée comme un nouveau pointeur et peut se voir attribuer un nouvel identificateur de pointeur.

frameId

Type : UINT32

Identificateur commun à plusieurs pointeurs pour lesquels l’appareil source a signalé une mise à jour dans une seule trame d’entrée. Par exemple, un numériseur multi touch en mode parallèle peut signaler les positions de plusieurs contacts tactiles dans une seule mise à jour du système.

Notez que l’identificateur de trame est affecté en tant qu’entrée signalée au système pour tous les pointeurs sur tous les appareils. Par conséquent, ce champ ne peut pas contenir de valeurs strictement séquentielles dans une seule série de messages qu’une fenêtre reçoit. Toutefois, ce champ contient la même valeur numérique pour toutes les mises à jour d’entrée qui ont été signalées dans la même trame d’entrée par un seul appareil.

pointerFlags

Type : POINTER_FLAGS

Il peut s’agir de toute combinaison raisonnable d’indicateurs provenant des constantes Indicateurs de pointeur .

sourceDevice

Type : HANDLE

Gérez l’appareil source qui peut être utilisé dans les appels à l’API d’appareil d’entrée brute et à l’API de l’appareil numériseur.

hwndTarget

Type : HWND

Fenêtre à laquelle ce message a été ciblé. Si le pointeur est capturé, implicitement en raison d’un contact sur cette fenêtre ou à l’aide explicite de l’API de capture de pointeur, il s’agit de la fenêtre de capture. Si le pointeur n’est pas capturé, il s’agit de la fenêtre sur laquelle se trouvait le pointeur lorsque ce message a été généré.

ptPixelLocation

Type : POINT

Coordonnées d’écran prédites du pointeur, en pixels.

La valeur prédite est basée sur la position du pointeur signalée par le numériseur et le mouvement du pointeur. Cette correction peut compenser le décalage visuel dû aux retards inhérents à la détection et au traitement de l’emplacement du pointeur sur le numériseur. Cela s’applique aux pointeurs de type PT_TOUCH. Pour les autres types de pointeurs, la valeur prédite est identique à la valeur non prédite (voir ptPixelLocationRaw).

ptHimetricLocation

Type : POINT

Coordonnées d’écran prédites du pointeur, en unités HIMETRIC.

La valeur prédite est basée sur la position du pointeur signalée par le numériseur et le mouvement du pointeur. Cette correction peut compenser le décalage visuel dû aux retards inhérents à la détection et au traitement de l’emplacement du pointeur sur le numériseur. Cela s’applique aux pointeurs de type PT_TOUCH. Pour les autres types de pointeurs, la valeur prédite est identique à la valeur non prédite (voir ptHimetricLocationRaw).

ptPixelLocationRaw

Type : POINT

Coordonnées d’écran du pointeur, en pixels. Pour les coordonnées d’écran ajustées, consultez ptPixelLocation.

ptHimetricLocationRaw

Type : POINT

Coordonnées d’écran du pointeur, en unités HIMETRIC. Pour les coordonnées d’écran ajustées, consultez ptHimetricLocation.

dwTime

Type : DWORD

0 ou l’horodatage du message, en fonction du nombre de graduations système lors de la réception du message.

L’application peut spécifier l’horodatage d’entrée dans dwTime ou PerformanceCount. La valeur ne peut pas être plus récente que le nombre de graduations actuel ou la valeur QueryPerformanceCount (QPC) du thread d’injection. Une fois qu’une image est injectée avec un horodatage, toutes les images suivantes doivent inclure un horodatage jusqu’à ce que tous les contacts de l’image passent à un état UP . La valeur d’horodatage personnalisé doit également être fournie pour le premier élément du tableau de contacts. Les valeurs d’horodatage après le premier élément sont ignorées. La valeur d’horodatage personnalisé doit être incrémentée dans chaque image d’injection.

Lorsque PerformanceCount est spécifié, l’horodatage est converti en heure actuelle en résolution de 0,1 milliseconde lors de l’injection réelle. Si un PerformanceCount personnalisé a produit la même fenêtre de 0,1 milliseconde que celle de l’injection précédente, ERROR_NOT_READY est retourné et l’injection ne se produit pas. Bien que l’injection ne soit pas invalidée immédiatement par l’erreur, la prochaine injection réussie doit avoir une valeur PerformanceCount d’au moins 0,1 milliseconde de la précédente injection réussie. Cela est également vrai si dwTime est utilisé.

Si dwTime et PerformanceCount sont spécifiés dans InjectTouchInput, ERROR_INVALID_PARAMETER est retourné.

InjectTouchInput ne peut pas basculer entre dwTime et PerformanceCount une fois l’injection démarrée.

Si ni dwTime ni PerformanceCount ne sont spécifiés, InjectTouchInput alloue l’horodatage en fonction du minutage de l’appel. Si les appels InjectTouchInput sont séparés à plusieurs reprises de moins de 0,1 milliseconde, ERROR_NOT_READY peuvent être retournés. L’erreur n’invalide pas immédiatement l’entrée, mais l’application d’injection doit réessayer la même image pour que l’injection réussisse.

historyCount

Type : UINT32

Nombre d’entrées fusionnées dans ce message. Ce nombre correspond au nombre total d’entrées qui peuvent être retournées par un appel à GetPointerInfoHistory. Si aucune fusion ne s’est produite, ce nombre est de 1 pour l’entrée unique représentée par le message.

InputData

dwKeyStates

Type : DWORD

Indique les touches de modification du clavier qui ont été enfoncées au moment où l’entrée a été générée. Il peut s’agir de zéro ou d’une combinaison des valeurs suivantes de l’état de la clé du modificateur.

POINTER_MOD_SHIFT : une touche Maj a été enfoncée.

POINTER_MOD_CTRL : une touche Ctrl a été enfoncée.

Utilisez GetKeyState.

PerformanceCount

Type : UINT64

Valeur du compteur de performances haute résolution lors de la réception du message de pointeur (haute précision, alternative 64 bits à dwTime). La valeur peut être étalonnée lorsque le matériel du numériseur tactile prend en charge les informations d’horodatage de l’analyse dans son rapport d’entrée.

ButtonChangeType

Type : POINTER_BUTTON_CHANGE_TYPE

Valeur de l’énumération POINTER_BUTTON_CHANGE_TYPE qui spécifie le changement d’état du bouton entre cette entrée et l’entrée précédente.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
En-tête winuser.h (inclure Windows.h)

Voir aussi

Structures