Seite 1 von 1

Mausradtest

Verfasst: 08.09.2009 14:33
von Donald
Hi,
beim Versuch eine Abfrage bezüglich des Mausrades hinzubekommen
ist folgendes entstanden.
Vielleicht könntet Ihr mal testen ob es bei euch auch funktioniert.

Code: Alles auswählen

;
; Mausradtest by Donald
; 08.09.2009 mit PB4.31
;
Procedure WindowCallBack(hwnd, uMsg, wParam, lParam)
  Select (wParam >> 16) & $FFFF
    Case 120
      StatusBarText(0, 0, "Rad wurde nach VOR gedreht")
    Case 65416
      StatusBarText(0, 0, "Rad wurde nach ZURÜCK gedreht")
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,0,0,200,200,"Mausradtest",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  If CreateStatusBar(0,WindowID(0))
    AddStatusBarField(200)
    StatusBarText(0, 0, "Drehe mal am Mausrad !")
  EndIf
EndIf

SetWindowCallback(@WindowCallBack())

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

End
Gruß Donald

Verfasst: 08.09.2009 14:40
von Kaeru Gaman
hm...
funktioniert bei mir nicht so richtig, das Rad meiner Maus reagiert nicht.
hier das Beweisfoto: http://tinyurl.com/kuyqdd

mach ich was falsch?

Verfasst: 08.09.2009 14:43
von milan1612
Kaeru Gaman hat geschrieben:hm...
funktioniert bei mir nicht so richtig, das Rad meiner Maus reagiert nicht.
hier das Beweisfoto: http://tinyurl.com/kuyqdd

mach ich was falsch?
Witzbold.

@Donald
Funktioniert tadellos.

Verfasst: 08.09.2009 14:53
von Falko
Mausrad funktioniert bei mir auch prima unter X86 und X64 PB4.4 beta.
Nur das Event für Windows schließen ist überflüssig weil der Schließbutton nicht existiert.
Ich habe bei mir den Parameter #PB_Window_SystemMenu hinzugefügt.
Ansonsten kann man das Windows mit <Alt><F4> beenden. :allright:


Gruß Falko

Verfasst: 08.09.2009 15:12
von Donald
Hi,

@Falko
habs oben geändert.

Gruß Donald

Verfasst: 08.09.2009 16:49
von Little John
Funktioniert gut hier (PB 4.31 unter Windows XP Pro), danke!

So kommt noch mehr Bewegung in die Demonstration:

Code: Alles auswählen

Procedure WindowCallBack(hwnd, uMsg, wParam, lParam)
  Static count

  Select (wParam >> 16) & $FFFF
    Case 120
      count + 1
      StatusBarText(0, 0, Str(count))
    Case 65416
      count - 1
      StatusBarText(0, 0, Str(count))
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Gruß, Little John

Verfasst: 08.09.2009 16:55
von edel
Gibt es einen Grund warum du die Konstanten dafuer nicht nutzt?

Verfasst: 08.09.2009 18:23
von HeX0R
Das geht auch ohne Callback

Code: Alles auswählen

#WHEEL_DELTA = 120

OpenWindow(0, 0, 0, 200, 200, "Mausradtest", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
CreateStatusBar(0, WindowID(0))
AddStatusBarField(200)
StatusBarText(0, 0, "Drehe mal am Mausrad !")

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
		Case #WM_MOUSEWHEEL
			wparam = EventwParam() >> 16
			If wparam = - #WHEEL_DELTA
				StatusBarText(0, 0, "Rad wurde ZURÜCK gedreht")
			ElseIf wparam = #WHEEL_DELTA
				StatusBarText(0, 0, "Rad wurde VOR gedreht")
			EndIf
	EndSelect
ForEver