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:

Eine kleine Anmerkung zu Mouse-events

 
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
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 02:09    Titel: Eine kleine Anmerkung zu Mouse-events Antworten mit Zitat

Titel:Eine kleine Anmerkung zu Mouse-events

Grund:Screensaver Tutorials auf www.freebasic-portal.de

man moechte bei einem Screensaver verstaendlicherweise auch einen Abbruch durch Mausbewegung erziehlen. Nun, man koennte denken es sollte ganz einfach sein, man fragt eine "Alt" Position
der Maus ab und ueberprueft nun immer ob diese bleibt. Und genau da ist der haken an der Sache.

Folgendes Beispiel:

Code:


Screen 19,32,,1

Dim Maus_Alt_X as Integer
Dim Maus_Alt_Y as Integer

GetMouse Maus_Alt_X,Maus_Alt_Y

Dim Maus_Neu_X as Integer
Dim Maus_Neu_Y as Integer


do
GetMouse Maus_Neu_X,Maus_Neu_Y

locate 1,1:?"Alte Position: ";Maus_Alt_X,Maus_Alt_Y
locate 2,1:?"Neue Position: ";Maus_Neu_X,Maus_Neu_Y

sleep 1
loop until multikey(&h01)



Ohne die Maus bewegt zu haben, ist die alte Position 0,0 und die neue ganz woanders.
Dieses Problem laesst sich auf zwei arten loesen.

Entweder man setzt die Maus gleich am start auf 0,0 oder die vermutlich bessere loesung ist ein sleep vor der "Alt" Abfrage. Warum es wie oben zu einen Fehler kommt, kann ich mir persoenlich nur dadurch erklaeren das bei der Abrage der "Alt" Maus Position der Screen noch nicht fertig initialisiert ist aber schon die naechsten functionen ausfuehrt...

Also:

Code:


Screen 19,32,,1

Dim Maus_Alt_X as Integer
Dim Maus_Alt_Y as Integer

'' und um das ganze (auch im Fenstermodus) sicherer zu gestalten einach das REM der
'' naechste Zeile entfernen

REM setmouse 100,100,0 '(oder 1 wenn man den Mauszeiger sehen will :D )

sleep 50
GetMouse Maus_Alt_X,Maus_Alt_Y

Dim Maus_Neu_X as Integer
Dim Maus_Neu_Y as Integer


do
GetMouse Maus_Neu_X,Maus_Neu_Y

locate 1,1:?"Alte Position: ";Maus_Alt_X,Maus_Alt_Y
locate 2,1:?"Neue Position: ";Maus_Neu_X,Maus_Neu_Y

sleep 1

loop until multikey(&h01)


Wenn die Maus nicht gerade bewegt wird, sollten "Alt" und "Neu" jetzt identisch sein, wodurch man problemlos mit den Mouse-events arbeiten kann...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 21.06.2007, 11:35    Titel: Antworten mit Zitat

Tjoar, wollt dort eigentlich nur die Grundlagen von Windows-Bildschirmschonern zeigen. lächeln
Der Rest wäre ja schon wieder Gegenstand eines anderen Tuts, imho. Wenn noch jemand will, dass das dort mit dazu kommt, der kann's ja bearbeiten, oder bescheid sagen, dann mach ich's. zwinkern

/edit:
Hab Volta's Ergänzungstutorial erst jetzt gesehen. grinsen
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 21.06.2007, 19:25    Titel: Antworten mit Zitat

Hi Eternal_pain,
meinen herzlichen Dank, habe das gleich ausprobiert und im Tut ergänzt.
Ich habe das als Fehler in XP angesehen, da in ME alles normal lief.
Auf die Idee eine kurze Wartepause einzulegen bin ich garnicht gekommen.
Da hat sich die Nachtschicht von dir ja gelohnt zwinkern .
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 21.06.2007, 19:34    Titel: Antworten mit Zitat

Bei nem Bildschirmschoner kann man sich Screenevent zur Hilfe nehmen, dort ist es ein wenig einfacher.

Unten in dem Beispiel die Stelle mit "Case EVENT_MOUSE_MOVE" sollte interessant sein zwinkern
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 21.06.2007, 19:53    Titel: Antworten mit Zitat

mach ich doch, hier:
http://www.freebasic-portal.de/index.php?s=tutorials&id=15&seite=3
und das geht seeeeehr einfach grinsen .
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 21.06.2007, 21:26    Titel: Antworten mit Zitat

Frei nach dem Motto: "Geht nicht, gibts nicht." grinsen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
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