Seite 1 von 1

Mausklick Abfragefunktion

Verfasst: 06.08.2010 22:35
von Travis
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