Tutorial
Bildschirmschoner Erweiterungen
1. Testmodus
2. Abbruch bei Mausbewegung
_ 2.1. Mausabfrage
_ 2.2. ScreenEvent ab FB 0.17b
3. Kleine bunte Animation
2.2. ScreenEvent ab FB 0.17b
Mit der FreeBASIC-Version 0.17b hat sich das FreeBASIC development team eine neue Möglichkeit ausgedacht Ereignisse (z.B. Mausbewegung) festzustellen , den ScreenEvent.
Fast so wie in der WinAPI kann man viele Ereignisse wie Taste gedrückt, Maus im Fenster, Fenster hat den Focus etc. abfragen.
Wichtig dabei ist das Einbinden (includen) der 'fbgfx.bi' und 'Using fb' damit sind alle Definitionen für den ScreenEvent erledigt.
Auf die 'Getmouse'- Anweisungen können wir ganz verzichten.
In der Prozedur ShowScreensaver geben wir unserem Event einen Namen 'Dim evt As EVENT'.
Tritt jetzt ein Ereignis auf, jemand rüttelt an der Maus oder drückt eine Taste, so wird der Aufruf 'ScreenEvent(@evt)' einen Rückgabewert 1 (statt 0 = kein Ereignis) geben.
Jetzt könnte man ganz genau auswerten welcher Art dieses Ereignis war, 'evt.type' gibt dazu eine Kennzahl an. Da uns hier nur die Ereignisse interessieren die mit der Tastatur und Maus zusammen hängen (das sind die Ereignisse 1 - 8 ) frage ich nur diese hier ab.
Das war für mich erstaunlich einfach zu programmieren und ich hoffe es hier verständlich erklärt zu haben.
#include "windows.bi"
#include "fbgfx.bi"
Using fb 'Namespace fb
...
Sub ShowScreensaver
Dim evt As EVENT
' Vollbild, kein weiterer Moduswechsel
Screen 18, 32,, 1 Or 4
' Maussymbol nicht anzeigen
Setmouse ,,0
...
Do
...
'wurde die Maus bewegt oder Taste gedrückt
If (ScreenEvent(@evt)) Then
If evt.type >0 And evt.type <9 Then
Exit Sub
End If
End If
' Zur Senkung der Prozessorlast immer ein bisschen warten
Sleep 1
Loop
End Sub
Hier einmal ein Listing für eine Grundgerüst als Screensaver (ohne Animation):
#include "windows.bi"
#include "fbgfx.bi"
Using fb 'Namespace fb
Declare Sub ConfigureScreensaver
Declare Sub ShowScreensaver
Dim As String Param
' Kein Parameter?
If Command(1) = "" Then
' If MessageBox(0, "Sreensaver testen?", __FB_SIGNATURE__, MB_ICONQUESTION Or MB_YESNO) = IDYES Then
' ShowScreensaver
' End If
End
End If
' Gewünschtes Kommando isolieren
Param = Mid(Command(1), 2, 1)
Select Case Param
Case "s","s"
ShowScreensaver
Case "c"
ConfigureScreensaver
End Select
End' Programmende
Sub ConfigureScreensaver
MessageBox(0, "Es gibt nichts zu konfigurieren! ;)", __FB_SIGNATURE__, MB_ICONINFORMATION)
End Sub
Sub ShowScreensaver
Dim evt As EVENT
' Vollbild, kein weiterer Moduswechsel
Screen 18, 32,, 1 Or 4
' Maussymbol nicht anzeigen
Setmouse ,,0
'... zeichnen vorbereiten (dimensionieren, initialisieren etc.)
Do
'... zeichnen
'wurde die Maus bewegt oder Taste gedrückt
If (screenevent(@evt)) Then
If evt.type>0 And evt.type<9 Then
Exit Sub
End If
End If
' Zur Senkung der Prozessorlast immer ein bisschen warten
Sleep 1
Loop
End Sub
Gehe zu Seite
1 2 3 4
Zusätzliche Informationen und Funktionen |
- Das Tutorial wurde am 20.06.2007 von Volta angelegt.
- Die aktuellste Version wurde am 15.08.2007 von Volta gespeichert.
|
|