Scrollrad abfragen

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

php-freak hat geschrieben:Es tut mir leid das ich noch einmal fragen muss.

Allerdings gibts die Funktion:

Code: Alles auswählen

ChangeZeile()
Nicht mehr.
Hier bekommst du nun einen kleinen Denkanstoß von mir, weil ich heute so
gut gelaunt bin:
Zur Abfrage des Mausrades brauchst du diese Beispielfunktion(!) gar nicht.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

Beitrag von php-freak »

Code: Alles auswählen

Global x.w
Procedure.w MouseWheelDelta()  ;liefert +1/-1, je nach BewegungsRichtung des MausRades 
  x.w = ((EventwParam()>>16)&$FFFF)   ;!!! ZielTyp mu .W sein !!! 
  ProcedureReturn -(x / 120) 
EndProcedure 

Repeat
Delay(5)
x.w = ((EventwParam()>>16)&$FFFF) 
Debug x
ForEver
So gehts schonmal nicht!
PureBasic 4.30 (x86)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Eventwparam funktioniert nur mit eine Fenster und entsprechender Ereignisbehandlung.

Außerdem solltest du nicht den Code aus der Funktion an die Stelle manuell einfügen, sondern die Funktion dort aufrufen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

@sibru Danke hatte den Code letzte woche, trotz suche nicht finden können! Sehr brauchbares snippet ^^
Ich habe keine Lösung, aber ich bewundere das Problem.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ich sach nur Scroolrad ...
Windows 10 Pro, 64-Bit / Outtakes | Derek
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

Beitrag von sibru »

Wo is´n der Avar von php-freak abgeblieben ? (das Clown-Bildchen...)
Aber auch ohne Diesen hab´ ich´s inzwischen bemerkt, ist ja echt erschütternd...
Bild Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

php-freak hat geschrieben:Es tut mir leid das ich noch einmal fragen muss.

Allerdings gibts die Funktion:

Code: Alles auswählen

ChangeZeile()
Nicht mehr.
ZeHa hat geschrieben::freak:
:lol:
Windows 10 Pro, 64-Bit / Outtakes | Derek
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

Beitrag von php-freak »

Naja ist hier keiner der mir helfen kann?
PureBasic 4.30 (x86)
php-freak
Beiträge: 536
Registriert: 07.02.2009 18:08

Beitrag von php-freak »

So bin im Englischen Forum fündig geworden:

Code: Alles auswählen

Procedure.l WinCallback(hwnd, msg, wparam, lparam)
  result = #PB_ProcessPureBasicEvents
  Select msg
    Case #WM_MOUSEWHEEL
      If wparam < 0
        direction$ = "Scrolling towards user"
      Else
        direction$ = "Scrolling away from user"
      EndIf
      SetGadgetText(0, direction$)
  EndSelect
  ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 300, 200, "Detect Mousewheel", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SetWindowCallback(@WinCallback())
  TextGadget(0, 10, 50, 280, 25, "", #PB_Text_Center)
  Repeat
    event = WaitWindowEvent()
  Until event = #PB_Event_CloseWindow
EndIf
End
Dient nur der Vollständigkeit.
PureBasic 4.30 (x86)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Geht ausnahmsweise auch ohne Callback:

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

Repeat
	EventID = WaitWindowEvent()

	If EventID = #WM_MOUSEWHEEL
		WheelPos = EventwParam() >> 16		
		If WheelPos > 0 : Debug "MOUSE SCROLL NACH OBEN" : EndIf
		If WheelPos < 0 : Debug "MOUSE SCROLL NACH UNTEN" : EndIf
	EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten