ReportWindowContentInertia-Funktion

[Einige Informationen beziehen sich auf vorab veröffentlichte Produkte, die vor der kommerziellen Veröffentlichung erheblich geändert werden können. Microsoft übernimmt keine Gewährleistungen, ausdrücklichen oder konkludenten Angaben in Bezug auf die hier bereitgestellten Informationen.]

Meldet dem System, ob sich der Inhalt des angegebenen Fensters in einem Trägheitszustand befindet.

Syntax

WINUSERAPI
BOOL
WINAPI
ReportWindowContentInertia(
    HWND hWnd,
    BOOL bStartInertia);

Parameter

hWnd

Ein Handle für das Fenster, dessen Inhaltsträgheitszustand gemeldet wird.

bStartInertia

TRUE , um zu melden, dass der Inhalt des Fensters Trägheit eingegeben hat; FALSE , um zu melden, dass Trägheit beendet wurde.

Zurückgegebener Wert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null.

Bemerkungen

Der Fensterinhalt ist "inertia", wenn er nach abschluss des Eingabedatenstroms weiterhin verschoben wird, nachdem er von eingaben bearbeitet wurde. Melden Sie diese Trägheit, damit die Touchpadeingabe diese Bewegung bei Bedarf ordnungsgemäß anhalten kann.

Wenn sich ein Fenster in Trägheit befindet, ändert das System, wie es auf die Touchpadeingabe reagiert:

  • Kurz nachdem neue Touchpadeingaben eingetroffen sind, sendet das System WM_STOPINERTIA an das Fenster. Die Anwendung sollte auf diese Nachricht reagieren, indem sie die Bewegung des Inhalts angehalten, aber nicht notwendigerweise aus dem Zustand "Inertia" übergehen, wenn sie Optimierungen für wiederholte Gesten hat, die denselben Inhalt bearbeiten (z. B. Treffertesteingaben, die Inhalte in Unträgheit bevorzugen, oder sich an die vorhandene Inhaltsgeschwindigkeit erinnern).
  • Wenn das System feststellt, dass die Touchpadeingabe versucht, die Inhaltsbewegung anzuhalten, sendet das System WM_ENDINERTIA an das Fenster. Die Anwendung sollte auf diese Nachricht reagieren, indem sie die Bewegung des Inhalts angehalten und den Zustand "Inertia" verlässt.

Beispielszenarien:

  • Der Benutzer führt eine Schnelleingriff aus: WM_ENDINERTIA wird gesendet. Die Mauseingabe wird nicht erzeugt – der Tipp hat nur dazu geführt, dass die Unträgheit endet.
  • Der Benutzer hält einen Finger auf dem Touchpad und hebt es dann auf: WM_STOPINERTIA gefolgt von WM_ENDINERTIA.
  • Der Benutzer führt eine schnelle Zweifingergeste aus: Keine Unträgheitsmeldungen. Wiederholte Gesten sollen ohne unnötiges Anhalten des Inhalts behandelt werden.
  • Der Benutzer hält einen Finger (oder zwei) auf dem Touchpad und führt dann eine Zweifingergeste aus: WM_STOPINERTIA. Durch die Wohnung vor dem Ausführen der Geste war es möglich, dass der Benutzer versucht hat, den Inhalt anzuhalten.

Obwohl in den meisten Fällen der Empfang WM_STOPINERTIA entweder von WM_ENDINERTIA oder einer anderen Touchpadgeste gefolgt wird, ist dies nicht gewährleistet. Wenn Anwendungen beim Empfang WM_STOPINERTIA einen speziellen Inhaltsstatus implementieren, sollte dieser Zustand nach einiger Zeit beendet werden. Ebenso kann WM_ENDINERTIA möglicherweise nicht unbedingt WM_STOPINERTIA vorangestellt werden, wenn der Touchpadeingabedatenstrom kurz ist.

Das Melden von Trägheit ist wichtig für die ordnungsgemäße Behandlung von Touchpadeingaben. Wenn sich der Inhalt eines Fensters in Trägheit befindet und es nicht an das System gemeldet wird, führt das Tippen auf das Touchpad zum normalen Verhalten eines Klicks (Maus nach links und links nach oben). Die Anwendung behandelt diese Mauseingabe möglicherweise als Interaktion mit dem Inhalt in Bewegung, was möglicherweise dazu führt, dass der Benutzer eine Aktion ausführt, die der Benutzer nicht beabsichtigt hat.

Für Trägheit, die durch Toucheingabe oder Stifteingabe verursacht wird, muss das System die Eingabe nicht speziell in Bezug auf Trägheit behandeln, da das Fenster, dessen Inhalt sich in Trägheit befindet, in der Regel derselbe ist, der die nachfolgende Eingabe empfängt. Bei Touchpadeingaben trifft das System im Gegensatz dazu eine Entscheidung, bevor die Anwendung eingaben erhält. Wenn der Benutzer versucht, die Trägheit mit dem Touch- oder Stifteingaben zu stoppen, empfiehlt es sich weiterhin, die Trägheit mit dem Touchpad zu beenden, dann tritt das erwartete Verhalten auf.

Das System verfolgt nur ein einzelnes Fenster in DerTia. Wenn die Inertia bereits aktiv ist, wenn diese API aufgerufen wird, um die Inertiät zu melden, die auf einem anderen Fenster beginnt, werden die vorherigen Inertia-Informationen ersetzt.

Wenn die Trägheit gemeldet wird, muss das angegebene Fenster dem aktuellen Thread gehören, und der Thread muss in den letzten zwei Sekunden Eingaben abgerufen haben. Es sollte anschließend als beendet gemeldet werden, sobald die Inhaltsbewegung des Fensters beendet wurde (es sei denn, das Fenster wurde entweder WM_STOPINERTIA oder WM_ENDINERTIA empfangen, in diesem Fall ist es nicht erforderlich, das Anhalten der Trägheit zu melden). Wenn das System die Unträgheit nicht mehr verfolgt, wird das Anhalten der Meldeträgheit im Hintergrund ignoriert, wenn das nachverfolgte Fenster nicht mit dem angegebenen Fenster übereinstimmt oder wenn das nachverfolgte Fenster einem anderen Prozess gehört.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 11 [nur Desktop-Apps]
Unterstützter Server (Mindestversion) Nicht unterstützt
Header Winuser.h (einschließen Windows.h)
Bibliothek User32.lib
DLL User32.dll (Ordnungszahl 2695)

Siehe auch