Struttura TOUCHINPUT (winuser.h)
Incapsula i dati per l'input tocco.
Sintassi
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;
Members
x
Coordinata x (punto orizzontale) dell'input tocco. Questo membro è indicato in centesimi di un pixel di coordinate dello schermo fisico.
y
Coordinata y (punto verticale) dell'input tocco. Questo membro è indicato in centesimi di un pixel di coordinate dello schermo fisico.
hSource
Handle del dispositivo per il dispositivo di input di origine. Ogni dispositivo viene assegnato a un provider univoco in fase di esecuzione dal provider di input tocco. Vedere la sezione Esempi di seguito.
dwID
Identificatore del punto di tocco che distingue un particolare input tocco. Questo valore rimane coerente in una sequenza di contatto tocco dal punto in cui un contatto scende fino a quando non viene eseguito il backup. Un ID può essere riutilizzato in un secondo momento per i contatti successivi.
dwFlags
Set di flag di bit che specificano vari aspetti della stampa, del rilascio e del movimento del punto di tocco. I bit in questo membro possono essere qualsiasi combinazione ragionevole dei valori nella sezione Osservazioni.
dwMask
Set di flag di bit che specificano quali dei campi facoltativi nella struttura contengono valori validi. La disponibilità di informazioni valide nei campi facoltativi è specifica del dispositivo. Le applicazioni devono usare un valore di campo facoltativo solo quando il bit corrispondente è impostato in dwMask. Questo campo può contenere una combinazione dei flag dwMask menzionati nella sezione Osservazioni.
dwTime
Timestamp per l'evento, in millisecondi. L'applicazione che usa deve notare che il sistema non esegue alcuna convalida in questo campo; quando il flag di TOUCHINPUTMASKF_TIMEFROMSYSTEM non è impostato, l'accuratezza e la sequenza dei valori in questo campo dipendono completamente dal provider di input tocco.
dwExtraInfo
Valore aggiuntivo associato all'evento touch.
cxContact
Larghezza dell'area contatto tocco in centesimi di pixel nelle coordinate dello schermo fisico. Questo valore è valido solo se il membro dwMask ha il flag TOUCHEVENTFMASK_CONTACTAREA impostato.
cyContact
Altezza dell'area contatto tocco in centesimi di pixel nelle coordinate dello schermo fisico. Questo valore è valido solo se il membro dwMask ha il flag TOUCHEVENTFMASK_CONTACTAREA impostato.
Commenti
Nella tabella seguente sono elencati i flag per il membro dwFlags .
Flag | valore | Descrizione |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | Il movimento si è verificato. Impossibile combinare TOUCHEVENTF_DOWN. |
TOUCHEVENTF_DOWN | 0x0002 | Il punto di tocco corrispondente è stato stabilito tramite un nuovo contatto. Impossibile combinare TOUCHEVENTF_MOVE o TOUCHEVENTF_UP. |
TOUCHEVENTF_UP | 0x0004 | Un punto di tocco è stato rimosso. |
TOUCHEVENTF_INRANGE | 0x0008 | Un punto di tocco è compreso nell'intervallo. Questo flag viene usato per abilitare il supporto del puntatore del tocco sull'hardware compatibile. Le applicazioni che non vogliono il supporto per il passaggio del mouse possono ignorare questo flag. |
TOUCHEVENTF_PRIMARY | 0x0010 | Indica che questa struttura TOUCHINPUT corrisponde a un punto di contatto primario. Per altre informazioni sui punti di tocco primari, vedere il testo seguente. |
TOUCHEVENTF_NOCOALESCE | 0x0020 | Quando viene ricevuto usando GetTouchInputInfo, questo input non è stato unito. |
TOUCHEVENTF_PEN | 0x0040 | L'evento touch è stato attivato da un dispositivo stilo. |
TOUCHEVENTF_PALM | 0x0080 | L'evento touch è stato attivato dal palmo dell'utente. |
Flag | valore | Descrizione |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact e cyContact sono validi. Per altre informazioni sui punti di tocco primari, vedere il testo seguente. |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo è valido. |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | L'ora di sistema è stata impostata nella struttura TOUCHINPUT . |
Un punto di tocco è designato come primario quando è il primo punto di tocco da stabilire da uno stato precedente di nessun punto di tocco. Il flag di TOUCHEVENTF_PRIMARY continua a essere impostato per tutti gli eventi successivi per il punto di tocco primario finché non viene rilasciato il punto di tocco primario. Si noti che un evento TOUCHEVENTF_UP nel punto di tocco primario non designa necessariamente la fine di un'operazione Tocco di Windows; l'operazione Windows Touch corrente procede dalla creazione del punto di tocco primario fino al rilascio dell'ultimo punto di tocco.
Si noti che un punto di tocco solitario o, in un set di punti di tocco simultanei, il primo da rilevare, è designato il primario. La posizione del mouse di sistema segue il punto di tocco primario e, oltre ai messaggi di tocco, genera anche WM_LBUTTONDOWN, WM_MOUSEMOVE e WM_LBUTTONUP messaggi in risposta alle azioni su un punto di tocco primario. Il punto di tocco primario può anche generare WM_RBUTTONDOWN e WM_RBUTTONUP messaggi usando il movimento di pressione e di blocco.
Si noti che l'identificatore del punto di tocco può essere dinamico ed è associato a un determinato punto di tocco solo finché il punto di tocco persiste. Se il contatto viene interrotto e quindi ripreso (ad esempio, se un dito viene rimosso dalla superficie e quindi premuto di nuovo), lo stesso punto di tocco (lo stesso dito, penna o altro dispositivo) può ricevere un identificatore del punto di tocco diverso.
Il tipo seguente viene definito per rappresentare un puntatore costante a una struttura TOUCHINPUT .
typedef TOUCHINPUT const * PCTOUCHINPUT;
Esempio
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);
Nell'esempio seguente viene illustrato come ottenere le informazioni sul dispositivo dal membro hSource . Questo esempio usa GetRawInputDevice per recuperare informazioni sul dispositivo.
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();
}
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Intestazione | winuser.h (include Windows.h) |