STRUCTURE TOUCHINPUT (winuser.h)
Encapsule les données pour l’entrée tactile.
Syntaxe
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
Membres
x
Coordonnée x (point horizontal) de l’entrée tactile. Ce membre est indiqué en centièmes d’un pixel de coordonnées d’écran physiques.
y
Coordonnée y (point vertical) de l’entrée tactile. Ce membre est indiqué en centièmes d’un pixel de coordonnées d’écran physiques.
hSource
Handle d’appareil pour le périphérique d’entrée source. Chaque appareil reçoit un fournisseur unique au moment de l’exécution par le fournisseur d’entrée tactile. Consultez la section Exemples ci-dessous.
dwID
Identificateur de point tactile qui distingue une entrée tactile particulière. Cette valeur reste cohérente dans une séquence de contacts tactiles à partir du point où un contact descend jusqu’à ce qu’il revienne. Un ID peut être réutilisé ultérieurement pour les contacts suivants.
dwFlags
Ensemble d’indicateurs de bits qui spécifient différents aspects de la pression, de la libération et du mouvement du point tactile. Les bits de ce membre peuvent être n’importe quelle combinaison raisonnable des valeurs de la section Notes.
dwMask
Ensemble d’indicateurs de bits qui spécifient les champs facultatifs de la structure qui contiennent des valeurs valides. La disponibilité des informations valides dans les champs facultatifs est spécifique à l’appareil. Les applications doivent utiliser une valeur de champ facultative uniquement lorsque le bit correspondant est défini dans dwMask. Ce champ peut contenir une combinaison des indicateurs dwMask mentionnés dans la section Notes.
dwTime
Horodatage de l’événement, en millisecondes. L’application consommatrice doit noter que le système n’effectue aucune validation sur ce champ ; Lorsque l’indicateur TOUCHINPUTMASKF_TIMEFROMSYSTEM n’est pas défini, la précision et le séquencement des valeurs dans ce champ dépendent entièrement du fournisseur d’entrée tactile.
dwExtraInfo
Valeur supplémentaire associée à l’événement tactile.
cxContact
Largeur de la zone de contact tactile en centièmes de pixel en coordonnées d’écran physiques. Cette valeur n’est valide que si l’indicateur TOUCHEVENTFMASK_CONTACTAREA est défini pour le membre dwMask.
cyContact
Hauteur de la zone de contact tactile en centièmes de pixel en coordonnées d’écran physiques. Cette valeur n’est valide que si l’indicateur TOUCHEVENTFMASK_CONTACTAREA est défini pour le membre dwMask.
Remarques
Le tableau suivant répertorie les indicateurs du membre dwFlags .
Indicateur | Valeur | Description |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | Des mouvements ont eu lieu. Ne peut pas être combiné avec TOUCHEVENTF_DOWN. |
TOUCHEVENTF_DOWN | 0x0002 | Le point de contact correspondant a été établi par le biais d’un nouveau contact. Ne peut pas être combiné avec TOUCHEVENTF_MOVE ou TOUCHEVENTF_UP. |
TOUCHEVENTF_UP | 0x0004 | Un point tactile a été supprimé. |
TOUCHEVENTF_INRANGE | 0x0008 | Un point tactile est à portée. Cet indicateur est utilisé pour activer la prise en charge du pointage tactile sur le matériel compatible. Les applications qui ne souhaitent pas prendre en charge le pointage peuvent ignorer cet indicateur. |
TOUCHEVENTF_PRIMARY | 0x0010 | Indique que cette structure TOUCHINPUT correspond à un point de contact principal. Pour plus d’informations sur les points tactiles principaux, consultez le texte suivant. |
TOUCHEVENTF_NOCOALESCE | 0x0020 | Lorsqu’elle est reçue à l’aide de GetTouchInputInfo, cette entrée n’a pas été coalescée. |
TOUCHEVENTF_PEN | 0x0040 | L’événement tactile a été déclenché par un appareil stylet. |
TOUCHEVENTF_PALM | 0x0080 | L’événement tactile a été déclenché par la paume de l’utilisateur. |
Indicateur | Valeur | Description |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact et cyContact sont valides. Pour plus d’informations sur les points tactiles principaux, consultez le texte suivant. |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo est valide. |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | L’heure système a été définie dans la structure TOUCHINPUT . |
Un point tactile est désigné comme principal lorsqu’il s’agit du premier point tactile à être établi à partir d’un état précédent sans point tactile. L’indicateur TOUCHEVENTF_PRIMARY continue d’être défini pour tous les événements suivants pour le point tactile principal jusqu’à ce que le point tactile principal soit libéré. Notez qu’un événement TOUCHEVENTF_UP sur le point tactile principal ne désigne pas nécessairement la fin d’une opération Windows Touch ; L’opération Windows Touch actuelle se poursuit de l’établissement du point tactile principal jusqu’à ce que le dernier point tactile soit libéré.
Notez qu’un point tactile solitaire ou, dans un ensemble de points tactiles simultanés, le premier à être détecté, est désigné comme principal. La position de la souris système suit le point tactile principal et, en plus des messages tactiles, génère également des messages WM_LBUTTONDOWN, WM_MOUSEMOVE et WM_LBUTTONUP en réponse aux actions sur un point tactile principal. Le point tactile principal peut également générer des messages WM_RBUTTONDOWN et WM_RBUTTONUP à l’aide du mouvement d’appui prolongé.
Notez que l’identificateur de point tactile peut être dynamique et est associé à un point tactile donné uniquement tant que le point tactile persiste. Si le contact est rompu puis repris (par exemple, si un doigt est retiré de la surface, puis appuyé à nouveau vers le bas), le même point tactile (le même doigt, le même stylet ou tout autre appareil de ce type) peut recevoir un identificateur de point tactile différent.
Le type suivant est défini pour représenter un pointeur constant vers une structure TOUCHINPUT .
typedef TOUCHINPUT const * PCTOUCHINPUT;
Exemples
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
if (GetTouchInputInfo((HTOUCHINPUT)lParam,
cInputs,
pInputs,
sizeof(TOUCHINPUT)))
{
// process pInputs
if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
{
// error handling
}
}
else
{
// GetLastError() and error handling
}
delete [] pInputs;
}
else
{
// error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);
L’exemple suivant montre comment obtenir les informations de l’appareil à partir du membre hSource . Cet exemple utilise GetRawInputDevice pour récupérer des informations sur l’appareil.
for (UINT i = 0; i < cInputs; i++){
TOUCHINPUT ti = pInputs[i];
RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
info.cbSize = sizeof(RID_DEVICE_INFO);
UINT size = 0;
if (GetRawInputDeviceInfo(ti.hSource, RIDI_DEVICEINFO, &info, &size)){
}else{
DWORD err = GetLastError();
}
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
En-tête | winuser.h (inclure Windows.h) |