Fonction ReportWindowContentInertia

[Certaines informations concernent le produit préversion qui peut être sensiblement modifié avant sa publication commerciale. Microsoft n’offre aucune garantie, expresse ou implicite, en ce qui concerne les informations fournies ici.]

Signale au système si le contenu de la fenêtre spécifiée est dans un état d’inertie.

Syntaxe

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

Paramètres

hWnd

Handle vers la fenêtre dont l’état d’inertie du contenu est signalé.

bStartInertia

TRUE pour signaler que le contenu de la fenêtre est entré en inertie ; FAUX pour signaler que l’inertie s’est arrêtée.

Valeur renvoyée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Remarques

Le contenu de la fenêtre est « en inertie » s’il continue de se déplacer après avoir été manipulé par entrée après la conclusion du flux d’entrée. Signalez cette inertie afin que l’entrée du pavé tactile puisse arrêter correctement ce mouvement si nécessaire.

Si une fenêtre est en inertie, le système change la façon dont il répond à l’entrée du pavé tactile :

  • Peu après l’arrivée de la nouvelle entrée du pavé tactile, le système envoie WM_STOPINERTIA à la fenêtre. L’application doit réagir à ce message en arrêtant le mouvement de son contenu, mais pas nécessairement en passant à l’état « en inertie » si elle a des optimisations pour les mouvements répétés qui manipulent le même contenu (par exemple, l’entrée de test de positionnement favorisant le contenu en inertie ou en mémorisant la vitesse de contenu existante).
  • Si le système détermine que l’entrée du pavé tactile tente d’arrêter le mouvement de contenu, le système envoie WM_ENDINERTIA à la fenêtre. L’application doit réagir à ce message en arrêtant le mouvement de son contenu et en quittant l’état « en inertie ».

Exemples de scénarios :

  • L’utilisateur effectue un clic rapide : WM_ENDINERTIA est envoyé. L’entrée de la souris n’est pas produite : le robinet a entraîné l’inertie de fin.
  • L’utilisateur tient un doigt sur le pavé tactile, puis le soulève : WM_STOPINERTIA suivi de WM_ENDINERTIA.
  • L’utilisateur effectue un mouvement rapide à deux doigts : aucun message d’inertie. Les mouvements répétés sont destinés à être gérés sans interrompre inutilement le contenu.
  • L’utilisateur contient un doigt (ou deux) sur le pavé tactile, puis effectue un mouvement à deux doigts : WM_STOPINERTIA. En se trouvant avant d’effectuer le mouvement, il était possible que l’utilisateur tente d’arrêter le contenu.

Bien que dans la plupart des cas, la réception de WM_STOPINERTIA est suivie d’WM_ENDINERTIA ou d’un autre mouvement de pavé tactile, il n’est pas garanti. Si les applications implémentent un état de contenu spécial lors de la réception de WM_STOPINERTIA, cet état doit être quitté après un certain temps. De même, WM_ENDINERTIA peut ne pas nécessairement être précédée d’WM_STOPINERTIA si le flux d’entrée du pavé tactile est court.

L’inertie de création de rapports est importante pour gérer correctement l’entrée du pavé tactile. Si le contenu d’une fenêtre est en inertie et qu’il n’est pas signalé au système, le fait d’appuyer sur le pavé tactile entraîne le comportement normal d’un clic (souris gauche et gauche). L’application peut finir par traiter cette entrée de souris comme interagir avec le contenu en mouvement, ce qui peut entraîner l’exécution d’une action que l’utilisateur n’a pas prévu.

Pour l’inertie causée par l’entrée tactile ou de stylet, le système n’a pas besoin de gérer spécialement l’entrée par rapport à l’inertie, car la fenêtre dont le contenu est en inertie est généralement le même que celui qui reçoit l’entrée suivante. Pour l’entrée du pavé tactile, contrairement à celle-ci, le système prend une décision avant que l’application ne reçoive d’entrée. L’inertie de création de rapports causée par l’entrée tactile ou du stylet est toujours recommandée afin que si l’utilisateur tente d’arrêter l’inertie avec son pavé tactile, le comportement attendu se produit.

Le système effectue uniquement le suivi d’une seule fenêtre en inertie. Si l’inertie est déjà active lorsque cette API est appelée pour signaler l’inertie à partir d’une autre fenêtre, les informations d’inertie précédentes seront remplacées.

Si vous signalez un démarrage d’inertie, la fenêtre spécifiée doit être détenue par le thread actif et le thread doit avoir récupéré l’entrée au cours des deux dernières secondes. Il doit ensuite être signalé comme arrêté une fois que le mouvement de contenu de la fenêtre s’arrête (sauf si la fenêtre a reçu WM_STOPINERTIA ou WM_ENDINERTIA, auquel cas il n’est pas nécessaire de signaler l’arrêt de l’inertie). L’arrêt de l’inertie de rapport est ignoré en mode silencieux si le système ne suit plus l’inertie, si la fenêtre suivie ne correspond pas à la fenêtre spécifiée ou si la fenêtre suivie appartient à un autre processus.

Exigences

Prérequis Valeur
Client minimum requis Windows 11 [applications de bureau uniquement]
Serveur minimum pris en charge Aucun pris en charge
Header Winuser.h (include Windows.h)
Bibliothèque User32.lib
DLL User32.dll (ordinal 2695)

Voir également