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.
 
Nota Se l'hardware di destinazione in un computer non supporta il passaggio del mouse, quando viene impostato il flag di TOUCHEVENTF_UP , il flag di TOUCHEVENTF_INRANGE viene cancellato. Se l'hardware di destinazione in un computer supporta il passaggio del mouse, i flag di TOUCHEVENTF_UP e TOUCHEVENTF_INRANGE verranno impostati in modo indipendente.
 
Nella tabella seguente sono elencati i flag per il membro dwMask .
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

Nota Nell'esempio seguente la matrice pInputs non è ordinata. Usare il valore dwID per tenere traccia di punti di tocco specifici.
 
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)

Vedi anche

GetTouchInputInfo

Strutture