Übersicht über die Architektur

Diese Architekturübersicht bietet Kontext für die Windows Touch-API für Tablet- und Touchtechnologien und erläutert, wie sie in die größere Windows 7-Architektur passt.

Nachrichten für Windows Toucheingabe und Gesten

Messagingfunktionen für Windows Touch werden durch Lauschen und Interpretieren von Nachrichten während der Ausführung aktiviert. Die folgende Abbildung zeigt, wie Nachrichten von Hardware generiert und von Windows 7 an Anwendungen gesendet werden.

Abbildung, die zeigt, wie Windows 7 Nachrichten von Multitouchhardware an eine Anwendung sendet

In der spalte ganz links in der Abbildung empfängt die berührungsempfindliche Hardware Eingaben von einem Benutzer. Ein Treiber kommuniziert dann zwischen der Hardware und dem Betriebssystem. Als Nächstes generiert das Betriebssystem eine WM _ TOUCH- oder WM _ GESTURE-Nachricht, die dann an das HWND einer Anwendung gesendet wird. Die Anwendung aktualisiert dann die Benutzeroberfläche, wenn die informationen in der Nachricht gekapselt sind.

Anwendungen empfangen standardmäßig Gesten. Sofern sich eine Anwendung nicht für Windows Touch-Eingabemeldungen mit der RegisterTouchWindow-Funktion registriert, werden Benachrichtigungen für Gesten (WM _ GESTURE-Meldungen) von Windows erstellt und an dieses Anwendungsfenster gesendet. Wenn sich ein Anwendungsfenster für den Empfang von Touchnachrichten registriert, werden Benachrichtigungen für Windows Toucheingabe (WM _ TOUCH-Nachrichten) an dieses Anwendungsfenster gesendet. Windows Touch- und Gestennachrichten sind gierig in dem Sinne, dass nach dem Starten einer Fingerbewegung oder einer Geste in einem Anwendungsfenster alle Nachrichten an diese Anwendung gesendet werden, bis die Geste abgeschlossen ist oder die primäre Fingerbewegung abgeschlossen ist.

Für legacy-Unterstützung interpretiert Windows WM _ GESTURE-Nachrichten, wenn sie hochgeblasen werden, und sendet dann entsprechende SEND- oder POST-Nachrichten, die der Geste zuordnen. Stellen Sie sicher, dass Sie WM GESTURE-Nachrichten mit DefWindowProc weiterverenden, um zu vermeiden, dass die _ Legacyunterstützung nicht unterbricht. Weitere Informationen zur Legacyunterstützung finden Sie im Abschnitt Windows Übersicht über Touchgesten.

Manipulationen und Trägheit

Windows Touch-Programmierer müssen Gesten aus mehreren Quellen in einer Weise interpretieren können, die für die durchgeführte Geste sinnvoll ist. Microsoft stellt die Bearbeitungs-API bereit, um diese Berechnungen durchzuführen. Manipulationen sind im Wesentlichen Gesten mit zugeordneten Werten, die die gesamte Geste beschreiben. Nachdem Sie die Eingabedaten mit dem Bearbeitungsprozessor verbinden, können Sie Informationen abrufen, die für aktionen relevant sind, die der Benutzer für das Objekt vorsteuert. Die folgende Abbildung zeigt eine Möglichkeit, Manipulationen zu verwenden.

Abbildung: Fenster berühren Nachrichten, die an den Bearbeitungsprozessor eines Objekts übergeben werden, der Ereignisse mit der - Imanipulationevents-Schnittstelle behandelt

Oben links in der Abbildung hat der Benutzer den Bildschirm berührt, wodurch Touchnachrichten erstellt werden. Diese Nachrichten enthalten eine x-Koordinate und eine y-Koordinate, die verwendet werden, um das Objekt zu bestimmen, das sich im Fokus befindet. Das Objekt im Fokus enthält einen Bearbeitungsprozessor. Als Nächstes wird in der WM _ TOUCH-Nachricht mit dem TOUCHEVENTF _ UP-Flag das Objekt im Fokus des Benutzers ausgewählt, auf den Bearbeitungsprozessor verwiesen, und die Nachricht wird an den Bearbeitungsprozessor gesendet. Nachfolgende WM _ TOUCH-Nachrichten, die diesem Kontakt zugeordnet sind, werden an den Manipulationsprozessor gesendet, bis die WM _ TOUCH-Nachricht mit dem TOUCHEVENTF _ UP-Flag empfangen und das ausgewählte Objekt dereferenziert wird. Im unteren rechten Abschnitt der Abbildung wird eine Manipulationsereignissenke verwendet, die die _ IManipulationEvents-Schnittstelle implementiert, um die Manipulationsereignisse zu behandeln, die ausgelöst werden, während die Touchnachrichten erstellt werden. Die Ereignissenke kann Aktualisierungen der Schnittstelle basierend auf den Manipulationsereignissen ausführen, während sie auftreten.

In Windows Touch-Anwendungen ist es üblich, einfache Physik zu integrieren, damit Objekte reibungslos beendet werden, anstatt plötzlich anzuhalten, wenn sie nicht mehr berührt werden. Microsoft stellt die Trägheits-API bereit, um die Berechnungen für diese einfache Physik durchzuführen, damit sich Ihre Anwendung ähnlich wie andere Anwendungen verhalten kann. Dies spart Ihnen auch den Aufwand, der zum Erstellen robuster physikalischer Funktionen erforderlich ist. Die folgende Abbildung zeigt, wie Sie Trägheit verwenden können.

Abbildung: Fenster touch nachrichten, die an die iinertiaprocessor-Schnittstelle eines Objekts übergeben werden, wodurch Ereignisse mit - imanipulationevents-Schnittstelle ausgelöst werden

Beachten Sie die Ähnlichkeiten zwischen Trägheit und Manipulation. Der einzige Unterschied zwischen den beiden besteht in der Übergabe interpretierter Nachrichten bei Trägheit an einen Trägheitsprozessor statt an einen Manipulationsprozessor, und der Trägheitsprozessor löst die Ereignisse aus. Links oben in der Abbildung werden in der WM _ TOUCH-Nachricht mit dem TOUCHEVENTF _ UP-Flag Touchnachrichten verwendet, um ein Objekt im Fokus zu identifizieren, das einen Trägheitsprozessor und einen Manipulationsprozessor enthält. Nachfolgende WM _ TOUCH-Nachrichten werden an den Manipulationsprozessor gesendet, und der Bearbeitungsprozessor führt Aktualisierungen der Anwendungsbenutzeroberfläche durch. Nach Abschluss der Bearbeitung werden Geschwindigkeitswerte aus der Manipulation verwendet, um einen Trägheitsprozessor zu einrichten. Wie in der mittleren Spalte dargestellt, wird die Process- oder ProcessTime-Methode auf der IInertiaProcessor-Schnittstelle mithilfe eines Timers oder einer anderen Schleife in einem separaten Thread aufgerufen, bis die Aufrufe angeben, dass die Verarbeitung des Prozessors abgeschlossen ist. Während diese Aufrufe vorgenommen werden, werden Manipulationsereignisse ausgelöst, die von einer Manipulationsereignissenke verarbeitet werden, die auf der _ IManipulationEvents-Schnittstelle basiert. Im unteren rechten Abschnitt der Abbildung führt diese Ereignissenke dann Aktualisierungen der Anwendungsbenutzeroberfläche basierend auf Manipulationsereignissen aus, wenn sie über Ereignishandler in der Ereignissenke auftreten.

Programmierhandbuch