Zeitachse von Mausnachrichten und Systemereignissen

Wenn eine bestimmte Aktion ausgeführt wird, werden die Systemereignisse (mit dem Präfix ISG_) fast sofort von der Anwendung gesendet und empfangen. Die Mausnachrichten (mit dem Präfix WM_) werden gesendet, wenn die Aktion ausgeführt wird und von der Anwendung nach der Zeit empfangen wird, die benötigt wird, bis das Ereignis vom Microsoft Windows-Messagingdienst verarbeitet wird. Darüber hinaus sind CursorDown und CursorUp Stiftereignisse, die von der Stifthardware empfangen werden. Sie werden gesendet, wenn der Tablet-Stift den Bildschirm berührt und wenn er vom Bildschirm gehoben wird.

Stiftereignisse und Mausnachrichten werden nicht synchronisiert. Es gibt keine Garantie, dass entsprechende Mausnachrichten und Stiftereignisse in einer bestimmten Reihenfolge auftreten. Das folgende Diagramm zeigt die erwartete, aber nicht immer vorhersagbare Sequenz der gesendeten System- und Mausereignisse. Beachten Sie im Diagramm, dass die Mausereignisse verzögert werden, wenn Systemgestenereignisse erkannt werden.

erwartete Sequenz von System- und Mausereignissen für Stifteingaben

Wichtige Implementierungsüberlegungen

Berücksichtigen Sie beim Entwickeln von Mausnachrichten und Systemereignissen Folgendes:

  • Sowohl Stiftereignisse als auch Mausnachrichten werden an eine Anwendung gesendet, unabhängig davon, ob der Stift oder die Maus verwendet wird.
  • Wenn Ihre Anwendung sowohl auf Stift- als auch Mausnachrichten lauscht, ist es schwierig, die Beziehung der Nachrichten und damit das letztendliche Verhalten vorherzusagen. Stiftereignisse und Mausnachrichten werden nicht synchronisiert. Es gibt keine Garantie, dass entsprechende Mausnachrichten und Stiftereignisse (z. B. WM_LBUTTONDOWN und ISG_TAP oder WM_LBUTTONDBLCLK und ISG_DBLTAP) in einer bestimmten Reihenfolge auftreten. Die Beziehung zwischen diesen Nachrichten ist komplex.
  • Es wird empfohlen, Maus- und Stiftereignisse nicht in derselben Anwendungsfunktion zu mischen. Beispielsweise verhält sich ein Anwendungsfeature, das auf CursorDown und MouseUp reagiert, möglicherweise nicht wie erwartet jetzt oder mit zukünftigen Versionen des Tablet PC SDK.
  • Wenn der Benutzer den Tablet-Stift für die Ereignissequenz durch halten zieht, bevor die Sequenz abgeschlossen ist, entsprechen die gesendeten Ereignisse dem Linksziehen. Wenn beispielsweise der Ziehvorgang gestartet wird, werden ISG_DRAG und WM_LBUTTONDOWN gesendet. Wenn der Stift schließlich angehoben wird, werden CursorUp und WM_LBUTTONUP gesendet. Das Systemgestenereignis wird möglicherweise nicht sofort ausgelöst, da es bestimmen muss, welche Art von Ereignis auftritt.
  • Ein Doppeltippen mit einem Tablet-Stift ist oft weniger präzise als ein Doppelklick mit der Maus. Dies kommt aus der inhärenten Natur eines Doppeltippens mit einem Tablet-Stift. Da der Benutzer den Tablet-Stift anheben muss, um einen Doppelklick auszuführen, ist die Zeit zwischen den Tippen häufig größer als die entsprechende Zeit zwischen den Klicks eines Doppelklicks. Darüber hinaus ist es wahrscheinlich, dass die beiden Tippen des Tablet-Stifts an Bildschirmkoordinaten auftreten, die weiter auseinander liegen als die für die zwei Mausklicks der Maus. Um dies zu ermöglichen, verfügt Windows XP Tablet PC Edition über Einstellungen für den zeitlichen und räumlichen Abstand zwischen den beiden Doppeltippen, die von den Mauseinstellungen für einen Doppelklick getrennt sind. Diese Einstellungen können in den Tablet- und Stifteinstellungen in Systemsteuerung angepasst werden.

Aus diesen Überlegungen sollten Anwendungen nur auf einen Satz von Nachrichten statt auf beide lauschen. Wenn Sie eine Stift-fähige Anwendung erstellen, lauschen Sie nur auf das System und die Stiftnachrichten. Diese Nachrichten sind vorhersagbar und funktionieren gut mit dem Tablet-Stift. Wenn Sie eine Anwendung erstellen, die nicht stiftfähig ist, lauschen Sie nur auf die Mausnachrichten.