Panoramica dell'architettura

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

Messaggi per l'input e i movimenti tocco Windows

Le funzionalità di messaggistica per Windows Touch sono abilitate dall'ascolto e dall'interpretazione dei messaggi durante l'esecuzione. Nella figura seguente viene illustrato il modo in cui i messaggi vengono generati dall'hardware e inviati alle applicazioni Windows 7.

illustration showing how windows 7 sends messages from multitouch hardware to an application

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. Successivamente, il sistema operativo genera un messaggio WM_TOUCH o WM_GESTURE inviato a HWND di un'applicazione. L'applicazione aggiorna quindi l'interfaccia utente incapsulata nel messaggio.

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

Per il supporto legacy, Windows interpreta i messaggi WM_GESTURE se vengono memorizzati in bolle e quindi i messaggi appropriati SEND o POST che vengono mappati al movimento. Per evitare l'interruzione del supporto legacy, assicurarsi di inoltrare WM_GESTURE messaggi usando DefWindowProc. Altre informazioni sul supporto legacy sono disponibili nella sezione Windows Panoramica dei movimenti touch.

Modifiche e inerzia

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

illustration showing windows touch messages passed to an object's manipulation processor, which handles events with the -imanipulationevents interface

Nella parte superiore 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 in stato attivo. L'oggetto in stato attivo contiene un processore di manipolazione. Successivamente, nel messaggio WM_TOUCH con il flag di TOUCHEVENTF_UP , l'oggetto nello stato attivo dell'utente viene selezionato, il processore di manipolazione viene fatto riferimento e il messaggio viene inviato al processore di manipolazione. I messaggi successivi WM_TOUCH associati a questo contatto vengono inviati al processore di manipolazione finché il messaggio WM_TOUCHcon il flagTOUCHEVENTF_UP viene ricevuto e l'oggetto selezionato viene dereferenziato. Nella sezione inferiore destra della figura viene usato un sink di eventi di manipolazione che implementa l'interfaccia di _IManipulationEvents per gestire gli eventi di manipolazione generati mentre vengono creati i messaggi di tocco. Il sink di eventi può eseguire aggiornamenti all'interfaccia in base agli eventi di manipolazione durante l'esecuzione.

Nelle applicazioni touch di Windows è comune incorporare fisica semplice in modo che gli oggetti vengano senza problemi, anziché arrestarsi bruscamente quando non vengono più toccati. Microsoft fornisce l'API Inertia per eseguire i calcoli per questi semplici calcoli in modo che l'applicazione possa comportarsi in modo simile ad altre applicazioni. Ciò consente anche di risparmiare lo sforzo necessario per creare funzionalità di fisica affidabili. Nella figura seguente viene illustrato come usare l'inerzia.

illustration showing windows touch messages passed to an object's iinertiaprocessor interface, which raises events with -imanipulationevents interface

Si notino le somiglianze tra inerti e manipolazione. L'unica differenza tra i due è che nel caso di inertia, i messaggi interpretati vengono passati a un processore inertia anziché a un processore di manipolazione e il processore inertia 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 messaggi successivi WM_TOUCH 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 inertia. 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 il processore viene completato l'elaborazione. Anche se queste chiamate vengono effettuate, vengono generati eventi di manipolazione, gestiti da un sink di eventi di manipolazione in base all'interfaccia _IManipulationEvents . Nella sezione inferiore destra della figura, 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 eventi.

Guida per programmatori