ich hab mal ein Include geschrieben, dass die PB eigenen Mouse Funktionen erweitert.
Währe super wenn ihr es mal in einige eurer Codes einsetzen könntet und mir melden könntet ob es zu Fehlern kommt. Eigentlich sollte es keine geben...
Informationen zu den neuen Funktionen findet ihr im Code selber.
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Advance-Mouse-Functions-Include-File
;
; (c) 2007 - Scarabol
; Version - 1.00
; Date - 01.10.2007
;
; ------------------------------------------------------------
;
; +---ACHTUNG------------------------------------------------------------------------------------------------------+
; | |
; | Der Code enthält Konstanten, Strukturen und Variabeln, die nicht oder nur mit bedacht geändert werden dürfen! |
; | Konstanten: |
; | #AdvPB_MouseButton_Free |
; | #AdvPB_MouseButton_Active |
; | #AdvPB_MouseButton_Pushed |
; | #AdvPB_MouseButton_Released |
; | Strukturen: |
; | ADVPB_MOUSEBUTTON |
; | ADVPB_MOUSE |
; | Variabeln: |
; | AdvPB_MouseVar.ADVPB_MOUSE |
; | AdvPB_MouseDelayTimer.l |
; | |
; +----------------------------------------------------------------------------------------------------------------+
; hier eine Liste der Macros & Funktionen mit Erläuterung
; InitMouse()
; -> ersetzt den PB eigenen Befehl
;
; ExamineMouse()
; -> ersetzt den PB eigenen Befehl
;
; MouseX()
; -> ersetzt den PB eigenen Befehl
;
; MouseY()
; -> ersetzt den PB eigenen Befehl
;
; MouseWheel()
; -> ersetzt den PB eigenen Befehl
;
; MouseLocate()
; -> ersetzt den PB eigenen Befehl
;
; SetMouseSpeed(var.f)
; -> Erwartet eine Float Variable die später mit dem Delta Wert multipliziert wird.
; -> Dieser Befehl ändert sowohl die Geschwindigkeit in x- als auch in y-Richtung.
;
; SetMouseSpeedX(var.f)
; -> Dieser Befehl ändert nur die Geschwindigkeit in x-Richtung
;
; GetMouseSpeedX()
; -> Dieser Befehl gibt den aktuellen Wert für die Geschwindigekeit in x-Richtung zurück
;
; SetMouseSpeedY(var.f)
; -> Dieser Befehl ändert nur die Geschwindigkeit in y-Richtung
;
; GetMouseSpeed()
; -> Dieser Befehl gibt den aktuellen Wert für die Geschwindigkeit in y-Richtung zurück
;
; MouseButton(Button)
; -> ersetzt den PB eigenen Befehl
; -> es können ebenfalls die Konstanten
; (#PB_MouseButton_Left, #PB_MouseButton_Right, #PB_MouseButton_Middle) verwendet werden.
; -> Rückgabewerte:
; - #AdvPB_MouseButton_Free (0)
; - #AdvPB_MouseButton_Active (1)
; - #AdvPB_MouseButton_Pushed (2)
; - #AdvPB_MouseButton_Released (3)
;
; MouseButtonLast(Button)
; -> gibt den letzten Status des Button zurück
; -> auch dieser Befehl unterstützt die PB-Konstanten
;
; MouseActiveX(Button)
; -> gibt die x-Koordinate zurück als der Button den Status #AdvPB_MouseButton_Active hatte.
;
; MouseActiveY(Button)
; -> gibt die y-Koordinate zurück als der Button den Status #AdvPB_MouseButton_Active hatte.
;
; MouseReleasedX(Button)
; -> gibt die x-Koordinate zurück als der Button den Status #AdvPB_MouseButton_Released hatte.
;
; MouseReleasedY(Button)
; -> gibt die y-Koordinate zurück als der Button den Status #AdvPB_MouseButton_Released hatte.
;
; MouseDelay(Button)
; -> gibt die Zeit zurück die der Button zuletzt gedrückt war.
;
; SetWheelSpeed(var.f)
; -> ändert die Geschwindigkeit des Mausrades
;
; GetWheelSpeed(var.f)
; -> gibt die Geschwindigkeit des Mausrades zurück
Enumeration
#AdvPB_MouseButton_Free
#AdvPB_MouseButton_Active
#AdvPB_MouseButton_Pushed
#AdvPB_MouseButton_Released
EndEnumeration
Structure ADVPB_MOUSEBUTTON
state.l
laststate.l
delaystart.l
delay.l
activex.f
activey.f
releasedx.f
releasedy.f
EndStructure
Structure ADVPB_MOUSE
DelayTimer.l
ScreenX.f
ScreenY.f
WheelY.f
SpeedX.f
SpeedY.f
SpeedWheel.f
B.ADVPB_MOUSEBUTTON[3]
EndStructure
Define AdvPB_MouseVar.ADVPB_MOUSE
Procedure AdvPB_InitMouse()
Protected i
Shared AdvPB_MouseVar.ADVPB_MOUSE
If InitMouse() = 0
ProcedureReturn 0
EndIf
With AdvPB_MouseVar
For i = 0 To 2
\B[i]\state = #AdvPB_MouseButton_Free
\B[i]\delaystart = ElapsedMilliseconds()
Next
EndWith
AdvPB_MouseVar\SpeedX = 1
AdvPB_MouseVar\SpeedY = 1
EndProcedure
Procedure AdvPB_ExamineMouse()
Protected i
Shared AdvPB_MouseVar.ADVPB_MOUSE
Shared AdvPB_MouseVar\DelayTimer
AdvPB_MouseVar\DelayTimer = ElapsedMilliseconds()
ExamineMouse()
With AdvPB_MouseVar
\ScreenX + MouseDeltaX() * AdvPB_MouseVar\SpeedX
\ScreenY + MouseDeltaY() * AdvPB_MouseVar\SpeedY
\WheelY + MouseWheel() * AdvPB_MouseVar\SpeedWheel
For i = 0 To 2
\B[i]\laststate = \B[i]\state
Select \B[i]\laststate
Case #AdvPB_MouseButton_Active, #AdvPB_MouseButton_Pushed
If MouseButton(i+1)
\B[i]\state = #AdvPB_MouseButton_Pushed
Else
\B[i]\state = #AdvPB_MouseButton_Released
\B[i]\releasedx = \ScreenX
\B[i]\releasedy = \ScreenY
EndIf
\B[i]\delay = AdvPB_MouseVar\DelayTimer - \B[i]\delaystart
Case #AdvPB_MouseButton_Released, #AdvPB_MouseButton_Free
If MouseButton(i+1)
\B[i]\state = #AdvPB_MouseButton_Active
\B[i]\delay = 0
\B[i]\delaystart = AdvPB_MouseVar\DelayTimer
\B[i]\activex = \ScreenX
\B[i]\activey = \ScreenY
Else
\B[i]\state = #AdvPB_MouseButton_Free
EndIf
EndSelect
Next
EndWith
EndProcedure
Macro InitMouse()
AdvPB_InitMouse()
EndMacro
Macro ExamineMouse()
AdvPB_ExamineMouse()
EndMacro
Macro MouseX()
AdvPB_MouseVar\ScreenX
EndMacro
Macro MouseY()
AdvPB_MouseVar\ScreenY
EndMacro
Macro SetMouseSpeed(s)
AdvPB_MouseVar\SpeedX = s
AdvPB_MouseVar\SpeedY = s
EndMacro
Macro SetMouseSpeedX(s)
AdvPB_MouseVar\SpeedX = s
EndMacro
Macro GetMouseSpeedX()
AdvPB_MouseVar\SpeedX
EndMacro
Macro SetMouseSpeedY(s)
AdvPB_MouseVar\SpeedY = s
EndMacro
Macro GetMouseSpeedY()
AdvPB_MouseVar\SpeedY
EndMacro
Macro MouseButton(Button)
AdvPB_MouseVar\B[Button-1]\state
EndMacro
Macro MouseButtonLast(Button)
AdvPB_MouseVar\B[Button-1]\laststate
EndMacro
Macro MouseActiveX(Button)
AdvPB_MouseVar\B[Button-1]\activex
EndMacro
Macro MouseActiveY(Button)
AdvPB_MouseVar\B[Button-1]\activey
EndMacro
Macro MouseReleasedX(Button)
AdvPB_MouseVar\B[Button-1]\releasedx
EndMacro
Macro MouseReleasedY(Button)
AdvPB_MouseVar\B[Button-1]\releasedy
EndMacro
Macro MouseDelay(Button)
AdvPB_MouseVar\B[Button-1]\delay
EndMacro
Macro SetWheelSpeed(s)
AdvPB_MouseVar\SpeedWheel = s
EndMacro
Macro GetWheelSpeed()
AdvPB_MouseVar\SpeedWheel
EndMacro
Macro MouseWheel()
AdvPB_MouseVar\WheelY
EndMacro
Macro MouseLocate(x, y)
AdvPB_MouseVar\ScreenX = x
AdvPB_MouseVar\ScreenY = y
EndMacro
Scarabol