Systemereignisse und Mausnachrichten

Ihre Anwendung umfasst optimales Design und die Verwendung des Tabletstifts, indem sowohl Microsoft Windows-Mausnachrichten als auch -Systemereignisse gesendet werden. Anwendungen empfangen beide Ereignissätze für jede Stiftbewegung oder -aktion. Die Anwendung wählt dann das entsprechende Ereignis aus, das basierend auf dem Kontext der Aktion verwendet werden soll. Windows-Mausnachrichten funktionieren gut für Zeige- und Auswahl-Aktivitäten, und Sie sollten sie für Aktivitäten verwenden, die Interaktionen mit Benutzeroberflächen (UI)-Elementen umfassen. Stiftereignisse funktionieren gut für Echtzeit-Freihandanwendung, Stiftaktionen und Handschrift.

Hinweis

Sowohl Stiftereignisse als auch Mausnachrichten werden an eine Anwendung gesendet, unabhängig davon, ob der Stift oder die Maus verwendet wird.

Unterscheiden der Stifteingabe von Maus und Touch

Wenn Ihre Anwendung eine Mausnachricht empfängt (z. B. WM_LBUTTONDOWN), kann sie die GetMessageExtraInfo-Funktion aufrufen, um auszuwerten, ob die Nachricht von einem Stift oder einem Mausgerät stammt.

Der von GetMessageExtraInfo zurückgegebene Wert muss für 0xFFFFFF00 maskiert und dann mit 0xFF515700 verglichen werden. Die folgenden Definitionen können dies deutlicher machen:

#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE

Wenn der Vergleich „true“ ist, wurde diese Mausnachricht von einem Tablet-PC-Stift oder Touchscreen generiert. In allen anderen Fällen können Sie davon ausgehen, dass diese Nachricht von einem Mausgerät generiert wurde.

Die unteren 8 Bits, die von GetMessageExtraInfo zurückgegeben werden, sind variabel. Von diesen Bits werden 7 (die unteren 7, maskiert von 0x7F) verwendet, um die Cursor-ID darzustellen, Null für die Maus oder einen Variablenwert für die Stift-ID. Darüber hinaus wird in Windows Vista das achte Bit, maskiert von 0x80, verwendet, um die Toucheingabe von Stifteingaben zu unterscheiden (0 = Stift, 1 = Touch).

Weitere Informationen finden Sie unter Zeigegeräteeingabe und Toucheingabe.

Unterstützte Systemgesten

In der folgenden Tabelle sind Systemgesten aufgeführt, die derzeit in der Windows XP Tablet PC Edition enthalten sind, sie bietet Details zu den entsprechenden Stiftaktionen und Systemereignissen und sie zeigt, in welchem Verhältnis sie zu herkömmlichen Mausaktionen stehen.

Stiftgeste Mausaktion Beschreibung der Stiftgeste Ereignismeldungen Mausnachrichten Verhaltensweisen in Windows-basierten Anwendungen
Anzapfen
Linksklick
Tippen Sie einmal mit dem Stift auf den Bildschirm.
ISG_TAP gesendet, wenn der Stift angehoben wird.
WM_LBUTTONDOWN und WM_LBUTTONUP gesendet, wenn der Stift angehoben wird.
Befehl aus dem Menü oder der Symbolleiste auswählen, Maßnahmen ergreifen, wenn der Befehl ausgewählt wird, Einfügemarke (Insertion Point, IP) setzen, Auswahlfeedback anzeigen.
Doppeltippen
Doppelklicken
Tippen Sie zweimal schnell hintereinander auf den Bildschirm.
ISG_DOUBLETAP beim zweiten Tippen (unten) gesendet. ISG_TAP-Ereignis beim ersten Tippen gesendet.
WM_LBUTTONDBLCLK beim zweiten Tippen (unten) gesendet. WM_LBUTTONDOWN und WM_LBUTTONUP beim ersten Tippen (oben) wie für einzelnes Tippen gesendet.
Wort auswählen, Datei oder Ordner öffnen.
Drücken und Halten
Klicken Sie mit der rechten Maustaste auf
Tippen und halten Sie auf dem Bildschirm, bis ein Maussymbol angezeigt wird, und heben Sie dann den Stift an, um ein Kontextmenü anzuzeigen. Eine Anwendung könnte eine andere Aktion ausführen als das Anzeigen eines Kontextmenüs, wenn der Stift angehoben wird.
ISG_HOLDENTER gesendet, wenn der Stift lang genug auf dem Bildschirm belassen wurde. ISG_RIGHTTAP gesendet, wenn der Stift angehoben wird, und es erfolgt ein Rechtsklick.
WM_RBUTTONDOWN und WM_RBUTTONUP gesendet, wenn mit der rechten Maustaste geklickt wird (wenn der Stift angehoben wird).
Kontextmenü anzeigen.
Gedrückt halten
Linksklick
Tippen und halten Sie auf dem Bildschirm, bis das Maussymbol angezeigt und ausgeblendet wird. Benutzer tun dies wahrscheinlich, wenn sie versehentlich gedrückt halten und nur tippen möchten.
ISG_TAP gesendet, wenn der Stift angehoben wird.
WM_LBUTTONDOWN und WM_LBUTTONUP gesendet, wenn der Stift angehoben wird.
Lange Linksklicken. Es ist keine Mausentsprechung vorhanden. Dies ist ein Fallback, wenn ein Benutzer lange gedrückt hält. Das Ereignis wird wieder zu einem Tippen.
Ziehen
Nach links ziehen
Tippen Sie auf den Bildschirm, um das Objekt auszuwählen, das verschoben werden soll, und ziehen Sie dann, nachdem das Objekt ausgewählt wurde.
ISG_DRAG gesendet, wenn der Ziehvorgang beginnt.
WM_LBUTTONDOWN gesendet, wenn das Ziehen beginnt, gefolgt von einer Reihe von Mausbewegungsnachrichten und gefolgt von einem WM_LBUTTONUP-Ereignis.
Ziehen Sie zum Auswählen, wie in Microsoft Word, wenn Sie mit einer IP beginnen; mehrere Wörter auswählen; ziehen, wie beim Ziehen eines Objekts in Windows; Scrollen.
Drücken und halten, gefolgt von einem Ziehen
Nach rechts ziehen
Tippen Sie auf den Bildschirm, um das Objekt auszuwählen, das verschoben werden soll. Halten Sie es gedrückt, bis das Maussymbol angezeigt wird, und ziehen Sie dann, um das Objekt zu verschieben. Heben Sie den Stift an, um ein Kontextmenü anzuzeigen.
ISG_HOLDENTER gesendet, wenn sich der Stift seit einiger Zeit auf dem Bildschirm befindet. ISG_RIGHTDRAG gesendet, wenn der Ziehvorgang beginnt.
WM_RBUTTONDOWN gesendet, wenn der Ziehvorgang beginnt, gefolgt von einer Reihe von Mausbewegungsnachrichten, gefolgt von einem WM_RBUTTONUP-Ereignis.
Ziehen Sie, wie beim Ziehen eines Objekts oder einer Auswahl, gefolgt von einem Kontextmenü.
Zeigen mit dem Stift
Zeigen mit der Maus
Halten Sie den Stift konstant in einem kleinen Abstand vom Bildschirm.
ISG_HOVERENTER-Ereignis anfangs gesendet. Wenn das Hoverintervall abgeschlossen ist, wird ISG_HOVERLEAVE gesendet.
Keine Mausnachrichtenentsprechung.
QuickInfo anzeigen, Rollover-Effekte und andere Verhaltensweisen beim Zeigen mit der Maus.
Schütteln in der Luft
Tablet-PC-Eingabebereich anzeigen. Keine Mausentsprechung.
Bewegen Sie den Stift schnell von Seite zu Seite, halten Sie die Spitze über, aber nahe am Bildschirm.
Das Ereignis wird nicht an die Anwendung übergeben.
Keine Mausnachrichtenentsprechung.
Neu, spezifisch für Tablet-PC.

 

Spezifizieren von Eingabestift- und Touchinteraktionen

Standardmäßig empfängt Ihr Fenster alle Systemgestenereignisse und verwendet das Standardinteraktionsmodell. Einige Teile dieses Modells beeinträchtigen möglicherweise Ihre Anwendung, sodass Sie sie selektiv deaktivieren können, indem Sie auf die WM_TABLET_QUERYSYSTEMGESTURESTATUS-Nachricht in Ihrem WndProc reagieren.