Seite 1 von 1

MouseWheel ohne ExamineMouse()

Verfasst: 25.11.2005 06:02
von Xaby
Ich habe folgendes Problem:
Ich suche eine Art Befehl, der GENAU das GLEICHE liefert wie der Befehl MouseWheel.

Aber ohne, dass ich ExamineMouse() benutzen muss. Kurz gesagt unter der FensterOberfläche von Windows und nicht in einem GrafikFenster.

Code: Alles auswählen

Procedure.w MouseWheelDelta() 
  ; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2289&postdays=0&postorder=asc&start=10
  ; Author: Danilo
  ; Date: 14. September 2003
  x.w = ((EventwParam()>>16)&$FFFF) 
  ;StartDrawing(ScreenOutput())
  ;DrawText(Str(x))
  ;StopDrawing()
  ProcedureReturn -(x / 120) 
EndProcedure 
Das Ding geht.
Aber: es funktioniert nicht wie MouseWheel.

Mein MausRad verändert den Wert von MouseWheel() schon bei einem MausRadSchritt. Die ScrollLeisten und Slider ebenfalls. Es liegt also nicht am Treiber.
MouseWheelDelta() verändert den Wert aber erst bei zwei bzw. drei MausRadSchritten.
Dadurch muss ich das Rad mehr drehen, um das gleiche Ergebnis wie bei MouseWheel() zu bekommen.

Das ist aber nicht super. Manchmal ist es einfach für den workflow besser, wenn man mit einem MouseRadSchritt auch einen VariablenSchritt mehr oder weniger bekommt.

>> Gibt es eine bessere Variante als MouseWheelDelta() ?

Verfasst: 25.11.2005 12:43
von bobobo
Bei mir tut's wie es soll. eine Rastung : ein Signal

Hast sicher 'ne LogitechMaus

Nein

Verfasst: 25.11.2005 15:07
von Xaby
Es ist keine LogitechMaus.
Aber bei allen anderen Programmen und auch bei MouseWheel geht es doch auch.
Gibt es eine Möglichkeit, wenn man ExamineMouse in einem Fenster benutzt hat, die Mausabfrage wieder abzuschalten, so dass man den Zeiger wieder aus dem Grafikfenster heraus bewegen kann, ohne dass das Programm erst beendet werden muss.

Eine Art ExitMouse [also InitMouse, nur aus eben...]
Das würde mein Problem auch lösen.

Wie kann ich nach ExamineMouse() wieder die FensterRoutinen der Maus benutzen?

Bitte um Hilfe.

Verfasst: 25.11.2005 16:36
von bobobo
Vielleicht geht's ja auch ganz ohne ExamineMouse ..

'n exitExamineMouse o.ä. kenn ich nicht ..

Guck Dir mal die Rückgabe von eventwparam() / eventlparam() bei Mausbenutzung (ohne Examinemouse) an.

WindowMouseX() WindowMouseY() gibts auch noch

Verfasst: 25.11.2005 18:34
von Xaby
Ja, benutze ich ja auch. Aber in dem Zusammenhang gibt es nichts für's MausRad. Es muss da aber etwas geben.
Weshalb funktioniert es denn bei allen Programmen und bei MouseWheel, aber nicht bei der oben beschriebenen MouseWheelDelta Funktion?

wo könnte das Problem liegen, welche Alternativen gibts?

Verfasst: 26.11.2005 22:34
von Kaeru Gaman
auf den ersten blick:

ersetze mal das x/120 im obigen beispiel durch x/40

ansonsten:

eigentlich müsste es auch ne API dafür geben...

der Code da is jämmerlich unkommentiert..
würde interessant sein, zu erfahren, was der denn überhaupt tut...