Ü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 sich in die größere Windows 7-Architektur einpasst.

Nachrichten für Windows-Toucheingaben und -Gesten

Messagingfeatures 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 Multitouch-Hardware an eine Anwendung sendet

In der linken Spalte der Abbildung empfängt touchsensitive 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 den HWND einer Anwendung gesendet wird. Die Anwendung aktualisiert dann die Benutzeroberfläche unter Berücksichtigung der in der Nachricht gekapselten Informationen.

Anwendungen empfangen standardmäßig Gesten. Sofern sich eine Anwendung nicht für Windows Touch-Eingabenachrichten mit der Funktion RegisterTouchWindow registriert, werden Benachrichtigungen für Gesten (WM_GESTURE Nachrichten) von Windows erstellt und an dieses Anwendungsfenster gesendet. Wenn ein Anwendungsfenster registriert wird, um Touchnachrichten zu empfangen, werden Benachrichtigungen für Windows Touch-Eingaben (WM_TOUCH Nachrichten) an dieses Anwendungsfenster gesendet. Windows Touch- und Gestennachrichten sind gierig in dem Sinne, dass nach einer Berührung oder einem Beginn einer Geste in einem Anwendungsfenster alle Nachrichten an diese Anwendung gesendet werden, bis die Geste abgeschlossen oder die primäre Berührung abgeschlossen ist.

Für legacy-Unterstützung interpretiert Windows WM_GESTURE Nachrichten, wenn sie in einer Blasenblase vorhanden sind, und sendet dann die entsprechenden Nachrichten, die der Geste zugeordnet sind, SEND oder POST. Stellen Sie sicher, dass Sie WM_GESTURE Nachrichten mithilfe von DefWindowProc weiterleiten, um zu vermeiden, dass die Legacyunterstützung nicht beschädigt wird. Weitere Informationen zur Legacyunterstützung finden Sie im Abschnitt Übersicht über Windows-Touchgesten.

Manipulationen und Trägheit

Windows Touch-Programmierer müssen in der Lage sein, Gesten aus mehreren Quellen auf eine Weise zu interpretieren, die für die geste stattfindende Geste von Bedeutung ist. Microsoft stellt die Bearbeitungs-API bereit, um diese Berechnungen durchzuführen. Manipulationen sind im Wesentlichen Gesten mit ihnen zugeordneten Werten, die die gesamte Geste beschreiben. Nachdem Sie die Eingabedaten mit dem Bearbeitungsprozessor verbunden haben, können Sie Informationen abrufen, die für die Aktion relevant sind, die der Benutzer für das Objekt ausführt. Die folgende Abbildung zeigt eine Möglichkeit, Manipulationen zu verwenden.

Abbildung: Windows-Touchnachrichten, die an den Bearbeitungsprozessor eines Objekts übergeben werden, der Ereignisse mit der -imanipulationevents-Schnittstelle verarbeitet

Oben links in der Abbildung hat der Benutzer den Bildschirm berührt, wodurch Touchnachrichten erstellt werden. Diese Meldungen 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 auf der WM_TOUCH Nachricht mit dem flag TOUCHEVENTF_UP 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 Bearbeitungsprozessor gesendet, bis die WM_TOUCH Nachricht mit dem TOUCHEVENTF_UP Flag empfangen und das ausgewählte Objekt abgeleitet wird. Im unteren rechten Abschnitt der Abbildung wird eine Manipulationsereignissenke verwendet, die die _IManipulationEvents-Schnittstelle implementiert, um die Bearbeitungsereignisse zu behandeln, die während der Erstellung der Touchnachrichten ausgelöst werden. Die Ereignissenke kann Aktualisierungen der Schnittstelle basierend auf den Bearbeitungsereignissen durchführen, während sie auftreten.

In Windows Touch-Anwendungen ist es üblich, einfache Physik zu integrieren, damit Objekte problemlos zum Stillstand kommen, anstatt abrupt anzuhalten, wenn sie nicht mehr berührt werden. Microsoft stellt die Inertia-API bereit, um die Berechnungen für diese einfache Physik durchzuführen, sodass sich Ihre Anwendung ähnlich wie andere Anwendungen verhalten kann. Dies spart Ihnen auch den Aufwand, der für die Erstellung robuster Physikfunktionen erforderlich ist. Die folgende Abbildung zeigt, wie Sie die Inertia verwenden können.

Abbildung: An die iinertiaprocessor-Schnittstelle eines Objekts übergebene Windows-Touchnachrichten, die Ereignisse mit der -imanipulationevents-Schnittstelle auslöst

Beachten Sie die Ähnlichkeiten zwischen Inertia und Manipulation. Der einzige Unterschied zwischen den beiden besteht darin, dass interpretierte Nachrichten im Fall von Inertia an einen Inertia-Prozessor statt an einen Manipulationsprozessor übergeben werden, und der Inertia-Prozessor löst die Ereignisse aus. Oben links in der Abbildung werden auf der WM_TOUCH Nachricht mit dem flag TOUCHEVENTF_UP Touchnachrichten verwendet, um ein Objekt im Fokus zu identifizieren, das einen Trägheitsprozessor und einen Bearbeitungsprozessor enthält. Nachfolgende WM_TOUCH Nachrichten werden an den Bearbeitungsprozessor gesendet, und der Bearbeitungsprozessor führt Updates für die Anwendungsoberfläche aus. Nach Abschluss der Bearbeitung werden Geschwindigkeitswerte aus der Bearbeitung verwendet, um einen Inertia-Prozessor einzurichten. Wie in der mittleren Spalte dargestellt, wird die Process- oder ProcessTime-Methode auf der IInertiaProcessor-Schnittstelle aufgerufen, indem ein Timer oder eine andere Schleife in einem separaten Thread verwendet wird, bis die Aufrufe angeben, dass der Prozessor die Verarbeitung abgeschlossen hat. Während dieser Aufrufe werden Bearbeitungsereignisse ausgelöst, die von einer Manipulationsereignissenke basierend auf der _IManipulationEvents-Schnittstelle behandelt werden. Im unteren rechten Abschnitt der Abbildung führt diese Ereignissenke dann Updates für die Anwendungsoberfläche basierend auf Manipulationsereignissen durch, wenn sie über Ereignishandler in der Ereignissenke erfolgen.

Programmierhandbuch