Mausklick Abfragefunktion
Verfasst: 06.08.2010 22:35
Die Suche hat mir nichts geliefert, also habe ich hier mal eine Funktion geschrieben, mit der ich abfragen kann ob ein Mausklick (drücken und wieder loslassen) oder ein Doppelklick einer der drei Maustasten erfolgt ist.
Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
Global ResX = 800
Global ResY = 600
MainWindow = OpenWindow(#PB_Any, 0, 0, ResX, ResY, "Title",#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(MainWindow),0,0,ResX,ResY,0,0,0)
Global Dim LastMouseButtonStatus(3)
Global Dim TmpMouseButtonStatus(3)
Global Dim MouseButtonTimer(3)
Global Dim MouseClick(3)
Global Dim MouseDoubleClick(3)
Procedure UpdateMouseClick()
For i = 1 To 3
MouseClick(i) = 0
MouseDoubleClick(i) = 0
Select i
Case 1
button = #PB_MouseButton_Left
Case 2
button = #PB_MouseButton_Right
Case 3
button = #PB_MouseButton_Middle
EndSelect
TmpMouseButtonStatus(i) = MouseButton(button)
If TmpMouseButtonStatus(i) <> LastMouseButtonStatus(i)
LastMouseButtonStatus(i) = TmpMouseButtonStatus(i) ; Aktueller Status der Maustaste
If TmpMouseButtonStatus(i) = 0 ; Maus wurde gedrückt und wieder losgelassen
If ElapsedMilliseconds() - MouseButtonTimer(i) < 400
MouseDoubleClick(i) = 1
EndIf
MouseButtonTimer(i) = ElapsedMilliseconds()
MouseClick(i) = 1
EndIf
EndIf
Next
EndProcedure
; --- Beispiel ---
Repeat
ExamineKeyboard()
ExamineMouse()
UpdateMouseClick()
If MouseClick(#PB_MouseButton_Left) = 1 : Debug "Mausklick links" : EndIf
If MouseDoubleClick(#PB_MouseButton_Left) = 1 : Debug "Doppelklick links" : EndIf
If MouseClick(#PB_MouseButton_Right) = 1 : Debug "Mausklick rechts" : EndIf
If MouseDoubleClick(#PB_MouseButton_Right) = 1 : Debug "Doppelklick rechts" : EndIf
If MouseClick(#PB_MouseButton_Middle) = 1 : Debug "Mausklick mitte" : EndIf
If MouseDoubleClick(#PB_MouseButton_Middle) = 1 : Debug "Doppelklick mitte" : EndIf
Until WindowEvent() = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
End