Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   tagMSLLHOOKSTRUCT > mouseData (immer 120?) (https://www.delphipraxis.net/202092-tagmsllhookstruct-mousedata-immer-120-a.html)

MicMic 26. Sep 2019 22:07

tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Hallo,

Bei MouseHookStruct.mouseData (HiWord) bekomme ich 120 oder -120 gefeuert (Scrollrad).
Dieser Wert wird auch oft beschrieben. Ich könnte mir aber vorstellen, dass dies kein fester Wert ist und man ihn abfragen sollte. Habe jedoch dazu nichts gefunden. In meinem Fall bekomme ich nämlich bei schnellen Raddrehungen auch mal 240/-240 geliefert. Dies möchte ich gerne abfragen. Wenn das jetzt kein fester Wert (120) ist, sollte ich natürlich diese Werte nicht direkt prüfen.

Vielleicht jemand über dieses Thema schon mal drüber gestolpert?

Gruß Mic

MicMic 26. Sep 2019 22:11

AW: tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Also es geht mir um das Abfragen für eine doppelte Geschwindigkeit.

UntoterGeist 26. Sep 2019 22:30

AW: tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Hab das schon mal in anderen Sprachen gesehen. Aber mehr als Größer Kleiner 0 für die Richtung ist da nicht viel drin. Was willst du denn damit machen? Du könntest das natürlich benutzen um Bereiche abzustecken. Also wenn Mausrad langsam mache dies und wenn Mausrad schnell mache das, so wie das in einigen Anwendungen/Editoren ist. Z.B. um das Scrollen zu beschleunigen.

MicMic 27. Sep 2019 06:31

AW: tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Ich wollte halt mal nachfragen, weil ich auch 240/-240 bekommen kann. Es gibt ja viele verschiedene Mäuse und Maustreiber und sicherlich auch exotische Einstellungsmöglichkeiten. Da dachte ich, 120 ist kein fester Wert. Ist es im Grunde auch nicht, wenn ich 240/-240 bekommen kann. Also wenn, dann nur auf positiv/negativ prüfen. Trotzdem würde ich auf 240/-240 oder evtl. sogar 360/-360 gerne prüfen. Doppelte/Dreifache... Geschwindigkeiten würde ich gerne überspringen, sprich einen bestimmten Code dann nicht ausführen.

Wenn 120 bleibt, dann kann ich natürlich einfach auf "120", "-120" prüfen. Somit würde ich "240", "-240" überspringen. Nur wenn es doch durch eine Einstellung z.B. 100 für WHEEL_DELTA gibt, anstatt 120... naja "GetWHEELDELTA" oder so, gibt es nicht. Dann hoffe ich mal auf einen festen Wert.

Der schöne Günther 27. Sep 2019 07:37

AW: tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Die Doku ist doch eigentlich sehr eindeutig:

Zitat:

The wheel rotation will be a multiple of WHEEL_DELTA, which is set at 120. This is the threshold for action to be taken, and one such action (for example, scrolling one increment) should occur for each delta.

The delta was set to 120 to allow Microsoft or other vendors to build finer-resolution wheels (a freely-rotating wheel with no notches) to send more messages per rotation, but with a smaller value in each message. To use this feature, you can either add the incoming delta values until WHEEL_DELTA is reached (so for a delta-rotation you get the same response), or scroll partial lines in response to the more frequent messages. You can also choose your scroll granularity and accumulate deltas until it is reached.
Quelle

Zitat:

Currently, a value of 120 is the standard for one detent. If higher resolution mice are introduced, the definition of WHEEL_DELTA might become smaller. Most applications should check for a positive or negative value rather than an aggregate total.
Quelle (.net)

Bonus:
Zitat:

The value of 120 can be evenly divided by 2, 3, 4 or 5. This gives a mouse manufacturer more options in dividing up the current coarser clicks into an even number of higher resolution clicks.
Quelle


Interessieren würde mich jetzt aber trotzdem, was z.B. eine Maus mit frei drehendem Rad von sich gibt. Oder ein gutes Notebook-Touchpad. Die können ja mittlerweile wirklich super fein scrollen und viele Anwendungen (z.B. Browser) unterstützten das auch.

MicMic 27. Sep 2019 08:59

AW: tagMSLLHOOKSTRUCT > mouseData (immer 120?)
 
Die Quellen berichtet nur nie etwas über Doppelwerte. Da fragt man sich warum...
Auf einer andere Webseite las ich mal "WheelDelta As Integer = SystemInformation.MouseWheelScrollDelta". Aber ich glaube, damit ist die Einstellung "Seite pro Radbewegung" gemeint. Es schaut jedenfalls nach einem Wert aus, der aus einer Systemeinstellung kommt.

Die Teilung durch 2,3,4 oder 5 macht dann schon etwas Sinn, dass es ein fester Wert sein kann. Wird wohl auch so sein.

Wobei die andere Quelle (mal ins Deutsch automatisch übersetzen lassen):

"Derzeit ist ein Wert von 120 der Standard für eine Rastung. Wenn Mäuse mit höherer Auflösung eingeführt werden, wird die Definition von WHEEL_DELTA möglicherweise kleiner. Die meisten Anwendungen sollten eher auf positive oder negative Werte als auf Gesamtsummen prüfen."

"Derzeit"... "möglicherweise"... nun, von Microsoft wird die entsprechende Konstante (wenn da 120 drin steht?) wohl nicht geändert. Eher gibt's dann in Zukunft wohl doch eine Funktion zum Abfragen. Ich prüfe dann halt auf mein Doppelwert (240/-240) und sonst auf positiv/negativ.

Danke für's raussuchen der Quellen

Mic


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz