MouseWheel für PB 5+?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

MouseWheel für PB 5+?

Beitrag von Lambda »

habe folgende MouseWheel Funktion gefunden, welche aber scheinbar nichtmehr geht. Original Code war auch ohne CallBack.

Code: Alles auswählen

; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2289&postdays=0&postorder=asc&start=10
; Author: Danilo (updated for PB4.00 by blbltheworm)
; Date: 14. September 2003
; OS: Windows
; Demo: Yes

#WM_MOUSEWHEEL = $20A 
#zoomspeed = 4 
Wheel = 20 

Procedure.w MouseWheelDelta() 
  x.w = ((EventwParam()>>16)&$FFFF) 
  ProcedureReturn -(x / 120) 
EndProcedure 

Procedure cb(hwnd, msg, wParam.w, lParam.l)
  Result = #PB_ProcessPureBasicEvents
  
  Select msg
    Case #WM_MOUSEWHEEL 
      Wheel + MouseWheelDelta() * #zoomspeed 
      Debug MouseWheelDelta()
      If Wheel < 8:Wheel = 8:EndIf 
      SetGadgetText(0,Str(Wheel)) 
  EndSelect
  
  ProcedureReturn Result
EndProcedure

OpenWindow(0,0,0,400,400,"Mouse Wheel z00m",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 
StringGadget(0,30,0,450,400,"20") 

SetGadgetFont(0,LoadFont(0,"Arial",Wheel)) 

SetWindowCallback(@cb())
Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow: End 
  EndSelect 
ForEver 

; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MouseWheel für PB 5+?

Beitrag von ts-soft »

Der Originalcode aus dem CodeArchiv funktioniert einwandfrei!
Der mit dem Callback, deren Parameter falsch Typen haben (wParam ist kein Word und lParam auch kein Long),
kann nicht funktionieren, ausser unter Win16, aber da läuft PB eher nicht :mrgreen:

Hier der funktionierende Code aus dem Codearchiv:

Code: Alles auswählen

; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2289&postdays=0&postorder=asc&start=10
; Author: Danilo (updated for PB4.00 by blbltheworm)
; Date: 14. September 2003
; OS: Windows
; Demo: Yes

#WM_MOUSEWHEEL = $20A 

Procedure.w MouseWheelDelta() 
  x.w = ((EventwParam()>>16)&$FFFF) 
  ProcedureReturn -(x / 120) 
EndProcedure 

OpenWindow(0,0,0,400,400,"Mouse Wheel z00m",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
 ; CreateGadgetList(WindowID(0)) 
  StringGadget(0,0,0,450,400,"20") 

#zoomspeed = 4 
Wheel = 20 
SetGadgetFont(0,LoadFont(0,"Arial",Wheel)) 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_Event_CloseWindow: End 
    Case #WM_MOUSEWHEEL 
      Wheel + MouseWheelDelta() * #zoomspeed 
      If Wheel < 8:Wheel = 8:EndIf 
      SetGadgetFont(0,LoadFont(0,"Arial",Wheel)) 
      SetGadgetText(0,Str(Wheel)) 
  EndSelect 
ForEver 
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: MouseWheel für PB 5+?

Beitrag von Lambda »

Den mit CallBack habe ich im Forum gefunden, aber der originale geht genauso wenig. (Win7 32/64bit)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MouseWheel für PB 5+?

Beitrag von ts-soft »

Bei mir geht er (Win7 x64 SP1), egal ob 32 oder 64 Bit, egal ob PB4.61, PB5.0 oder PB5.10B8.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: MouseWheel für PB 5+?

Beitrag von Lambda »

Kann es sein das ein Touchpad damit nicht läuft? Er wandelt den Cursor in das Scroll-Symbol, scrollt aber nicht sondern setzt die 20 immer auf 0.

Edit: #WM_MOUSEWHEEL unter PB5? Dachte PB unterstützt WinAPI Events in der PB-Ereignisschleife nicht mehr.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MouseWheel für PB 5+?

Beitrag von ts-soft »

cOoki3druqs hat geschrieben:Kann es sein das ein Touchpad damit nicht läuft? Er wandelt den Cursor in das Scroll-Symbol, scrollt aber nicht sondern setzt die 20 immer auf 0.
Vielleicht hat das Touchpad eine falsche Auflösung?
cOoki3druqs hat geschrieben: Edit: #WM_MOUSEWHEEL unter PB5? Dachte PB unterstützt WinAPI Events in der PB-Ereignisschleife nicht mehr.
PB hat WinAPI Events noch nie offiziel in der PB-Ereignisschleife unterstützt! Genauso wenig wie EventwParam(), Goto
usw. offiziel schon lange nicht mehr unterstützt werden. Nutzung auf eigene Gefahr, bzw. Probieren über Studieren :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten