Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Bildschirmschoner Erweiterungen

von RedakteurVoltaSeite 2 von 4

1. Testmodus
2. Abbruch bei Mausbewegung
_ 2.1. Mausabfrage
_ 2.2. ScreenEvent ab FB 0.17b
3. Kleine bunte Animation

2. Abbruch bei Mausbewegung

Die meisten Screensaver reagieren auch auf eine Mausbewegung und beenden bei der kleinsten Berührung.
Das muss sich auch in FreeBASIC realisieren lassen.
Anmerkung; Meine Erfahrung mit verschiedenen Windows - und FreeBASIC - Versionen
- die Mausabfrage, wie in 2.1 beschrieben, funktioniert unter XP (nicht immer) doch!
- -(es funktioniert! Danke an Eternal_pain der sich für eine Externer Link!Lösung die Nacht bis 3 Uhr morgens um die Ohren schlug ;)
- der ScreenEvent, wie in 2.2 beschrieben, funktionierte ab FB 0.17b unter ME und XP immer.


2.1. Mausabfrage

Man fragt die Position des Mousecursors (Mauspfeil) vor der DO..LOOP Schleife ab und speichert sie z.B. als mx_alt und my_alt.
In der DO..LOOP Schleife fragt man die Mausposition wieder in mx_neu und my_neu ab. Ein Vergleich zeigt dann ob die Maus bewegt wurde.
Wenn mx_neu (ungleich) mx_alt ist or (oder) my_neu (ungleich) my_alt ist, hat die Maus gezittert.

...
Sub ShowScreensaver
  Dim As Integer mx_alt, my_alt, mx_neu, my_neu
  ' Vollbild, kein weiterer Moduswechsel
  Screen 18,32,, 1 Or 4
  ' Maussymbol nicht anzeigen
  Setmouse ,,0
  Sleep 50 'nach dieser Verzögerung ist die Mausabfrage möglich; Danke Eternal_pain!!
  ' Mausposition merken
  Getmouse mx_alt, my_alt
  ...

  Do
    ...

    Getmouse mx_neu, my_neu
    'wurde die Maus bewegt?
    If mx_neu<>mx_alt Or my_neu<>my_alt Or Inkey <> "" Then
      Exit Sub
    End If
  Loop
End Sub
...

Ach ja, weil der Mousecursor eigentlich nur stört, kann man ihn mit Setmouse ,,0 (1 = ein, 0 = aus) ausschalten.

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 20.06.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 15.08.2007 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen