Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

brauch hilfe bei Screenevent

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 27.08.2013, 10:47    Titel: brauch hilfe bei Screenevent Antworten mit Zitat

Hallo

folgendes Problem hab ich: benutze ich ScreenEvent in einem Programm mit mehreren Menüs so funktioniert im ersten alles super doch im nächsten scheinen sich die Werte des Eventspeichers einzupendeln. Wobei ab und an auch ein Mausklick angezeigt wird obwohl es keinen gab.

Code:
#Include Once "fbgfx.bi"

Dim Shared evt As FB.EVENT
Screenres 1000, 575, 32

Dim AS String Rumpel
Dim AS Integer WF_ob, WF_kante, pressed = 0, X2, Y2

Do                                    ' Diese Schleife steht für ein vorhergehendes Menu
  sleep 1                            ' lasse ich diese weg geht alles
Loop Until Inkey = Chr(27)

DO
  Sleep 1
 
  screenlock
  locate 1, 1: ? "press " & pressed & " / obj " & WF_ob & " / kante " & WF_kante & "     "
  locate 2, 1: ? "koordinaten " & evt.x & "/" & evt.y & " " & X2 & "/" & Y2 & "  "
  locate 4, 1: ? "delta " & evt.dx & "/" & evt.dy & "  "
  screenunlock

    If ScreenEvent(@evt) Then                 ' Maus abfragen
      Select Case evt.type
      CASE FB.EVENT_MOUSE_BUTTON_PRESS        ' taste gedrückt
        IF evt.button = FB.BUTTON_LEFT Then   ' linke Taste
          pressed = -1                        ' druck merken
        End If
       
      Case FB.EVENT_MOUSE_BUTTON_RELEASE
        pressed = 0: WF_kante = 0
       
      Case FB.EVENT_MOUSE_MOVE
        IF pressed = -1 Then
          ' ...
        Else
          X2 = evt.x: Y2 = evt.y
        End If
       
      End Select
    End IF

Loop Until Inkey = Chr(27)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 27.08.2013, 12:37    Titel: Antworten mit Zitat

Ich weiß nicht ob das das Problem ist, aber SCREENEVENT "sammelt" die Ereignisse, bis sie abgefragt werden (frag mich aber nicht wie viele). Wenn sich aus der Vorschleife noch Ereignisse im Puffer befinden, werden die erst in der zweiten Schleife ausgewertet.

Eventuell mal vor der Schleife den Event-Puffer leeren.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 28.08.2013, 08:46    Titel: Antworten mit Zitat

hm also ich hab folgendes versucht:

1. ein Sleep 50
2. Getmouse(x,y): evt.X= x: evt.Y = y

wie vermutet brachte dies nichts

jetzt wollt ich versuchen den Puffer zu leeren, weiß allerdings nicht genau wie
mein gedanke ging zu Clear @evt, , ?Bytes?
wenn es mit Clear gehen sollte was müsste für Bytes eingetragen werden?

oder habt ihr noch ne andere Idee
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 28.08.2013, 09:14    Titel: Antworten mit Zitat

Du machst das wie mit dem Tastaturpuffer - du fragst ihn so lange ab bis er leer ist.
Code:
do while screenevent(@evt) : loop

Ich bin ganz ehrlich gesagt kein Experte für SCREENEVENT, aber so scheint es zu funktionieren.

Mit CLEAR würdest du lediglich die Kopie des letzten Events säubern. Das ist so ähnlich wie wenn du eine Taste aus dem Tastenpuffer abfragst und dann die Speichervariable leerst - den Tastenpuffer berührt das nicht.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz