 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.06.2007, 02:09 Titel: Eine kleine Anmerkung zu Mouse-events |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 21.06.2007, 11:35 Titel: |
|
|
Tjoar, wollt dort eigentlich nur die Grundlagen von Windows-Bildschirmschonern zeigen.
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.
/edit:
Hab Volta's Ergänzungstutorial erst jetzt gesehen.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.06.2007, 19:25 Titel: |
|
|
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 . _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 21.06.2007, 19:34 Titel: |
|
|
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  _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 21.06.2007, 19:53 Titel: |
|
|
mach ich doch, hier:
http://www.freebasic-portal.de/index.php?s=tutorials&id=15&seite=3
und das geht seeeeehr einfach . _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.06.2007, 21:26 Titel: |
|
|
Frei nach dem Motto: "Geht nicht, gibts nicht."  _________________
 |
|
Nach oben |
|
 |
|
|
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.
|
|