Panoramica dell'architettura

Questa panoramica dell'architettura fornisce il contesto per l'API Windows Touch per Tablet e Touch Technologies e spiega come si adatta all'architettura di Windows 7 più grande.

Messaggi per i movimenti e l'input tocco di Windows

Le funzionalità di messaggistica per Windows Touch sono abilitate ascoltando e interpretando i messaggi durante l'esecuzione. La figura seguente mostra come i messaggi vengono generati dall'hardware e inviati alle applicazioni da Windows 7.

illustrazione che mostra come Windows 7 invia messaggi dall'hardware multitouch a un'applicazione

Nella colonna più a sinistra dell'illustrazione, l'hardware sensibile al tocco riceve l'input da un utente. Un driver comunica quindi tra l'hardware e il sistema operativo. Il sistema operativo genera quindi un messaggio di WM_TOUCH o WM_GESTURE che viene quindi inviato al HWND di un'applicazione. L'applicazione aggiorna quindi l'interfaccia utente in base alle informazioni incapsulate nel messaggio.

Le applicazioni ricevono movimenti per impostazione predefinita. A meno che un'applicazione non registri i messaggi di input di Windows Touch con la funzione RegisterTouchWindow , le notifiche per i movimenti (messaggi WM_GESTURE ) vengono create da Windows e inviate a tale finestra dell'applicazione. Se una finestra dell'applicazione si registra per ricevere messaggi di tocco, le notifiche per l'input tocco di Windows (WM_TOUCH messaggi) vengono inviate a tale finestra dell'applicazione. I messaggi di tocco e movimento di Windows sono invidiati nel senso che dopo che un tocco viene eseguito o che un gesto inizia su una finestra dell'applicazione, tutti i messaggi vengono inviati a tale applicazione fino al completamento del movimento o al completamento del tocco principale.

Per il supporto legacy, Windows interpreta WM_GESTURE messaggi se vengono visualizzati in un'area in alto e quindi i messaggi appropriati SEND o POST che eseguono il mapping al movimento. Per evitare di interrompere il supporto legacy, assicurarsi di inoltrare WM_GESTURE messaggi usando DefWindowProc. Altre informazioni sul supporto legacy sono disponibili nella sezione Cenni preliminari sui movimenti tocco di Windows.

Modifiche e inerzia

I programmatori di Windows Touch devono essere in grado di interpretare i movimenti da più origini in modo significativo per il movimento in atto. Microsoft fornisce l'API di manipolazione per eseguire questi calcoli. Le manipolazioni sono essenzialmente movimenti associati a valori che descrivono l'intero movimento. Dopo aver connesso i dati di input al processore di manipolazione, è possibile recuperare le informazioni pertinenti all'azione eseguita dall'utente sull'oggetto. La figura seguente illustra un modo per usare le manipolazioni.

illustrazione che mostra i messaggi di tocco di Windows passati al processore di manipolazione di un oggetto, che gestisce gli eventi con l'interfaccia -imanipulationevents

In alto a sinistra dell'illustrazione, l'utente ha toccato lo schermo, che crea messaggi di tocco. Questi messaggi contengono una coordinata x e una coordinata y usata per determinare l'oggetto che si trova nello stato attivo. L'oggetto nello stato attivo contiene un processore di manipolazione. Successivamente, nel messaggio WM_TOUCH con il flag TOUCHEVENTF_UP , viene selezionato l'oggetto nello stato attivo dell'utente, viene fatto riferimento al processore di manipolazione e il messaggio viene inviato al processore di manipolazione. I successivi WM_TOUCH messaggi associati a questo contatto vengono inviati al processore di manipolazione fino a quando non viene ricevuto il messaggio WM_TOUCH con il flag TOUCHEVENTF_UP e l'oggetto selezionato viene dereferenziato. Nella sezione inferiore destra dell'illustrazione viene usato un sink di eventi di manipolazione che implementa l'interfaccia di _IManipulationEvents per gestire gli eventi di manipolazione generati durante la creazione dei messaggi di tocco. Il sink di eventi può eseguire aggiornamenti all'interfaccia in base agli eventi di manipolazione mentre si verificano.

Nelle applicazioni Windows Touch, è comune incorporare la fisica semplice in modo che gli oggetti arrivino senza problemi, invece di smettere bruscamente quando non vengono più toccati. Microsoft fornisce l'API Inerzia per eseguire i calcoli per la fisica semplice in modo che l'applicazione possa comportarsi in modo simile ad altre applicazioni. Ciò consente anche di risparmiare il lavoro necessario per creare funzionalità di fisica affidabili. Nella figura seguente viene illustrato come usare l'inerzia.

illustrazione che mostra i messaggi di tocco di Windows passati all'interfaccia iinertiaprocessor di un oggetto, che genera eventi con l'interfaccia -imanipulationevents

Si notino le analogie tra inerzia e manipolazione. L'unica differenza tra i due è che, nel caso dell'inerzia, i messaggi interpretati vengono inviati a un processore di inerzia anziché a un processore di manipolazione e l'inerzia del processore genera gli eventi. Nella parte superiore sinistra dell'illustrazione, nel messaggio WM_TOUCH con il flag di TOUCHEVENTF_UP , i messaggi di tocco vengono usati per identificare un oggetto in stato attivo che contiene un processore di inerzia e un processore di manipolazione. I successivi WM_TOUCH messaggi vengono inviati al processore di manipolazione e il processore di manipolazione esegue aggiornamenti all'interfaccia utente dell'applicazione. Al termine della manipolazione, i valori di velocità della manipolazione vengono usati per configurare un processore di inerzia. Come illustrato nella colonna centrale, il metodo Process o ProcessTime viene chiamato nell'interfaccia IInertiaProcessor usando un timer o un altro ciclo in un thread separato fino a quando le chiamate indicano che l'elaborazione del processore è stata completata. Anche se queste chiamate vengono effettuate, vengono generati eventi di manipolazione, gestiti da un sink di eventi di manipolazione basato sull'interfaccia _IManipulationEvents . Nella sezione inferiore destra dell'illustrazione, questo sink di eventi esegue quindi gli aggiornamenti all'interfaccia utente dell'applicazione in base agli eventi di manipolazione quando si verificano tramite gestori eventi nel sink dell'evento.

Guida per programmatori