Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 21.06.2012, 12:33 Titel: Doppelklick |
|
|
Hey
Ich würde gerne wissen, wie ich prüfen kann, ob ein Doppelklick mit der Maus stattgefunden hat. Ich dachte mir zuerst, ich könnte es ungefähr so machen:
Code: | Function DoppelKlick()As Integer
If MouseB=1 Then 'Maustaste wurde gedrückt
klick+=1
If klick=2 Then 'Wurde 2mal gedrückt
Return 1
klick=0
Else
Return 0
End If
End If
End Function |
Allerdings funktioniert das ganze natürlich nicht ganz. Gibt es eine Möglichkeit, meinen Code doch noch zum Laufen zu bringen? |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 21.06.2012, 13:56 Titel: |
|
|
Wenn der Doppelklick nur an einer bestimmten Stelle im Programm gebraucht wird, kann man folgendes im Hauptprogramm (ohne Funktion) machen:
Code: |
DIM mk AS INTEGER
mk = 0
DO
getmaus
IF mausk% = 1 then mk += 1
IF mk > 2 THEN ' "MausDoppelKlick"
LOOP
|
Ich würde aber noch die verstrichene Zeit zwischen 2 Mausklicks mit abfragen.
Mehr als 1 Sekunde verstrichene Zeit zwischen 2 Mausklicks ist dann kein Doppelklick.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.06.2012, 14:20 Titel: |
|
|
warum nicht mit auf EVENT_MOUSE_DOUBLE_CLICK testen? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 21.06.2012, 14:50 Titel: |
|
|
Du müsstest theoretisch auf einen Mausklick warten, dann darauf warten, dass keine Maus mehr gedrückt ist und dann wieder auf Mausklick warten - und das muss in einer festgelegten Zeit stattfinden (in welchem Zeitraum das eben als Doppelklick gewertet werden soll). SCREENEVENT ist da auf jeden Fall die sinnvollere Lösung. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 21.06.2012, 15:28 Titel: |
|
|
Bei mir funktioniert es nicht mit Screenevent:
Code: | #INCLUDE "fbgfx.bi"
Screen 12
DIM AS FB.EVENT PTR event
event = ALLOCATE(20)
Do
Sleep 1,1
ScreenLock
Cls
If (ScreenEvent(event)) Then
Select Case event->type
Case FB.EVENT_MOUSE_DOUBLE_CLICK
Draw String (10,10),"Doppelklick"
End Select
End If
ScreenUnlock
Loop Until Inkey=Chr(27)
DEALLOCATE event
End |
Scheint mir aber der richtige Code zu sein ... |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.06.2012, 17:09 Titel: |
|
|
CLS sorgt für eine nur sehr kurze Ansicht von "Doppelklick".
Code: | #Include "fbgfx.bi"
Screen 12
Dim As FB.EVENT evt
Do
Sleep 1,1
ScreenLock
'cls
If ScreenEvent(@evt) Then
If evt.button = FB.BUTTON_LEFT Then
If evt.Type = FB.EVENT_MOUSE_DOUBLE_CLICK Then
Print "Doppelklick"
EndIf
EndIf
End If
ScreenUnlock
Loop Until InKey = Chr(27)
End | Hier nur für den Doppelklick der linken Maustaste. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 21.06.2012, 18:08 Titel: |
|
|
Oh
Dummer Fehler meinerseits, danke für die Hilfe.  |
|
Nach oben |
|
 |
|