MouseWheel ohne ExamineMouse()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

MouseWheel ohne ExamineMouse()

Beitrag 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() ?
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Bei mir tut's wie es soll. eine Rastung : ein Signal

Hast sicher 'ne LogitechMaus
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Nein

Beitrag 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.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag 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?
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten