Übersicht
QMidi Tutorial
So
vertreiben Sie Ihre QBasic-Programme für LaOS
Nachtag zum LaOS
– Review aus der letzten Ausgabe.
Anfängerkurs
Neuvorstellung
von Victory of the Stars 2
Assembler
Tutorial Nr. 1
Neuvorstellung
von MousePro
|
Hallo QBasic-Times-Leser.
Leider hat sich diese Ausgabe etwas verspätet,
aber ich hoffe du bist nicht so verärgert darüber.
Jedenfalls ist diese Ausgabe vollgepackt
bis oben hin.
Einmal ist das schon lag erwartete QMidi-Tutorial
enthalten. Dann gibt es neues über LaOS.
Neu ist auch der Anfängerkurs und
der 1. Teil das Assembler Tutorials.
Es gibt natürlich noch mehr, aber
schau es dir doch einfach selbst an!
Viel Spaß!
Dieses Tutorial erläutert die Verwendung
von QMidi4.1.
QMidi4.1 kann von http://basic.de.cx unter
SFX down geloadet werden.
Zunächst sollte man alle Dateien von
QMidi ins QBasicverzeichniss kopieren.
Um QMidi verwenden zu können, müssen
die Midi-Driver installiert sein.
Am besten mach man das mit einer Bat Datei,
deren Inhalt so aussehen sollte.
sbmidi.exe
sbsim.com
qb /l qb.qlb
sbsim.com/u
sbmidi.exe/u
SBMIDI.EXE und SBSIM.COM sind die beiden
Midi-Driver. Sie werden in den Speicher gelanden und bleiben dort, bis
sie wieder von SBMIDI.EXE/U und SBSIM.COM/U deaktivert werden.
Das /U bedeutet uninstall.
Qbasic selber muß mit
qb /l qb.qlb
gestatet werden.
Wenn man so weit ist, startet man die Bat
und sucht sich dann die DEMO.BAS aus.
Diese demonstriert alle Funktionen von
QMidi.
Wenn man nun selbst QMidi benutzten möchte sollte man die wichtigsten Befehle kennen.
LoadMIDI
PlayMIDI
loopmidi
StopMIDI
UnloadMIDI
TimeMIDI!
LoadMIDI lädt eine Mididatei und liefert
einen Wert zurück.
PlayMIDI spielt die MIDI ab.
LoopMIDI wiederholt die MIDI
StopMidi beendet das Abspielen
UnloadMidi löscht die Midi aus dem
Speicher
TimeMIDI! liefert die Zeit zurück,
die die MIDI schon spielt
Wenn man sich die Demo angesehen hat, kann man den ersten Schritt wagen.
Zunächst muß man die SMALL.BAS
öffnen.
Diese Datei enthält die QMidi Minimalausstattung.
D.h. das nur die wichtigsten Sachen drin sind. Dazu gehören die Befehle
von eben und das sollte für den Anfang auch erst mal noch reichen.
Also nach dem die small.bas geöffnet ist, sollte man einfach mal diesen Quellcode unten an die BAS dranhängen.
‘ Beispiel für QMidi
‘ Die Datei sample1.
und wird geladen und wird MIDIHandle% zugewiesen
‘ MIDIHandle% enthält
nun die Nummer der MIDI, mit der dann gearbeitet wird
MIDIHandle% = LoadMIDI("sample1.MID")
‘ MIDI wird abgespielt
PlayMIDI MIDIHandle%
CLS
PRINT “Es müßte
jetzt eine Musik zu hören sein.“
PRINT “Diese spielt
nun schon “
PRINT
PRINT “Taste drücken
zum abbrechen“
‘ Öffne
Schleife
DO
‘ TimeMIDI! zeigt
die sekunden an.
LOCATE 3, 1
PRINT INT(TimeMIDI!);
“ sek“
‘ Lied wird immer
wiederholt
Loopmidi
‘ Verlasse Schleife
wenn Taste gedrückt wird.
LOOP UNTIL INKEY$
<> ""
‘ Stoppt
die Wiedergabe
StopMIDI
‘ MIDI wird gelöscht
UnloadMIDI MIDIHandle%
END
‘ Ende des Beispiels
Wenn das soweit funktioniert hat, kann man die BAT Datei vom Anfang noch ein wenig modifizieren.
sbmidi.exe/3
qb /l qb.qlb
sbmidi.exe/u
/3 gibt an, dass MPU benutzt wird.
Das verbessert die Klangqualität.
Es muß aber eine MPU kompatible
Soundkarte installiert sein.
SBSIM.COM wird nicht unbedingt benötigt.
So ich denke, dass das für den Anfang reichen sollte.
Soeren Dressler
So
vertreiben Sie Ihre QBasic-Programme für LaOS
LaOS bietet dem QBasic-Nutzer eine einfache Möglichkeit, die angesammelten Programme von einer einheitlichen Oberfläche aus zu starten.
Wenn Sie ein Programm geschrieben haben, und Sie möchten, dass es alle möglichst einfach starten können, dann erstellen Sie eine LaOS-Installation für Ihr Programm.
Als erstes zeichnen Sie ein Symbol in QuickDraw oder 3DStudio. Sie können aber auch eines der vorhandenen Symbole verwenden.
Danach nehmen Sie Ihr Programm in LaOS auf, indem Sie Zubehör->Dos-Server wählen, und hier die QBasic-Datei auswählen und darauf F7 drücken. Dann erscheint ein Dialog, wo Sie den Programmnamen eingeben können, das Symbol auswählen können, und eine Beschreibung des Programmes geben können, die danach in der Statuszeile erscheint.
Jetzt sollten Sie die Datei im ausgewählten Ordner starten können. Überprüfen Sie, ob sich das Programm starten lässt.
Jetzt brauchen Sie eine leere Diskette. Wenn Sie gerade keien leere haben, aber eine, auf der noch ausreichend Platz ist für Ihr Programm, dann können Sie auch diese verwenden. Um auf der Diskette das LaOS-Dateisystem einzurichten, gehen Sie auf Zubehör->Laufwerke und wählen hier Menu->Formatieren. Dieser Befehl hat keinen Einfluss auf die Dos-Daten, die auf der Diskette sind. Denn bei diesem Formatieren wird nur das LaOS-Verzeichnis auf der Diskette erstellt, das Datenträgersymbol und der Datenträgername drin abgespeichert und einen ersten LaOS-Ordner erstellt.
Gehen Sie zu Ihrem Programm und drücken Sie Insert. Im nun erscheinenden Programmverwalter drücken Sie F7 und wählen in der Liste zuoberst die Diskette an. Jetzt noch beim Ordner bestätigen, und Enter drücken. Jetzt erscheint eine Meldung "Die Datei wird kopiert statt verschoben."
Von nun an ist das Programm auf der Diskette, und kann problemlos in jedem LaOS dieser Welt gestartet werden. Jetzt können Sie noch im LaOS-Editor eine Readme-Datei schreiben, und diese ebenfalls auf der Diskette abspeichern.
Die Diskette können Sie Ihren Freunden geben, welche LaOS ebenfalls installiert haben. Damit man Ihr Programm aber vom Internet herunterladen kann und direkt in LaOS installieren kann, sollten Sie sich von mir eine spezielle LaOS-Installation erstellen lassen.
Beenden Sie LaOS und erstellen Sie aus dem "Laos"-Verzeichnis der Diskette eine Zip-Datei. Schicken Sie diese Zip-Datei einfach an laos@datacomm.ch und ich werde Ihnen die Installroutine hinzufügen.
Nachtag zum LaOS – Review aus der letzten Ausgabe.
Im Test war aufgefallen, dass LaOS stendig
versuchte auf die, nicht vorhandene, Diskette zu zugreifen.
Ebenfalls fehlte die Möglichkeit,
Dateien zu verschlüsseln.
Der Autor sagte dazu folgendes:
Der Disketten-Ladevorgang lässt sich abstellen, indem man im Ordner "Zubehör" auf "Laufwerke" geht, und dort Menu->Datenträger deaktivieren anwählt.
Die Verschlüsselungsfunktion
ist zugegebenermassen etwas versteckt:
Drücke auf
der, zu verschlüsselnden Datei, "Insert" und geh im nun erscheinenden
Programm-Verwalterfenster aufs Menu "öffnen/schliessen".
Thema: Menu
Sicherlich habt ihr in anderen Spielen schon viele Menüs gesehen. Eines davon ist mit Tastenauswahl.
Zum Beispiel:
Mainmenu
[N]eues Spiel
Spiel [l]aden
Spiel [s]peichern
[E]nde
Wie macht man das nun, dass man jetzt nur noch eine Taste drücken muß?
Der Quellcode ist sehr einfach.
SCREEN 13
PRINT “ [N]eues
Spiel“
PRINT “ Spiel [l]aden“
PRINT “ Spiel [s]peichern“
PRINT “ [E]nde“
DO
K$ = INKEY
IF K$ <> ““ THEN
SELECT CASE
K$
CASE “n“
GOTO
neuesSpiel
CASE “l“
GOTO
Spielladen
CASE “s“
GOTO
Spielspeichern
CASE “e“
END
END SELECT
END IF
LOOP
Thema: Cusortasten und andere Spezialtasten
Wenn man ein Spiel machen will braucht
man manchmal die Cusortasten aber mit INKEY$ ist das nicht so einfach,
da kein einfaches Zeichen zurück geliefert wird.
Und wie macht man das mit Enter und ESC.
Inkey$ liefert immer ein ASCII Zeichen
zurück von der Taste, die gerade gedrückt wurde aber es wartet
nicht auf die Taste.
Hier ein kleine Beispiel.
CLS
DO
K$ = INKEY$
IF K$ <> ““ then
PRINT “Taste als ASCII : “ K$, “Taste als Zahl : “ ASC(K$)
LOOP UNTIL K$ =
CHR$(27)
Dieses Beispiel zeigt die Rückgabe
von Inkey$.
ASC(K$) hat das Zeichen immer in eine
Zahl umgewandelt.
CHR$(27) wandelt eine Zahl in ein Zeichen
um.
In diesem Fall wird die 27 in ein Zeichen
umgewandelt und genau die 27 ist ESC.
In unserem Beispiel läuft also
die Schleife so lange, bis ESC gedrückt wird.
Man kann das ganze jetzt so verändern, dass man Enter drücken muß damit die Schleife verlassen wird.
CLS
DO
K$ = INKEY$
IF K$ <> ““ then
PRINT “Taste als ASCII : “ K$, “Taste als Zahl : “ ASC(K$)
LOOP UNTIL K$ =
CHR$(13)
13 ist in diesem Fall Enter
Das Programm liefet auch immer die Zahlen für jede Taste zurück..
Aber was ist nun mit den Cursortasten?
Bei den Cursortasten wird kein einstelliger
String zurück geliefert, sondern ein zweistelliger String.
Dabei ist die erste Stelle eine Leerzeichen
und die zweite Stelle ein Großbuchstabe.
So sieht es aus:
Links = “ K“
Oben = “ H“
Unten = “ P“
Rechts = “ M“
Wenn man das nun auswerten will, muß
man das rechte Zeichen überprüfen.
QBasic kann dieses mit dem Befehl RIGHT$(
STRING , Position )
Will man also prüfen, ob die obere
Cursortaste gedrückt wurde,
sagt man einfach:
k$ = INKEY$
IF RIGHT$(
k$ , 1 ) = “H“ THEN .....
Hier ein kleines Beispiel:
‘ GRAFIKMODUS mit
320*200 Pixeln und 256 Farben
SCREEN 13
‘ Startwert
x% = 160
y% = 100
‘ Öffne DO Schleife
DO
‘ Eingabe auf
K$ speichern
k$ = INKEY$
‘ nach einzelnen
Tasten suchen
IF RIGHT$(k$, 1)
= "K" THEN x% = x% - 1
IF RIGHT$(k$, 1)
= "H" THEN y% = y% - 1
IF RIGHT$(k$, 1)
= "P" THEN y% = y% + 1
IF RIGHT$(k$, 1)
= "M" THEN x% = x% + 1
‘ Malt ein
Pixel an die angegebene Position
PSET (x%, y%), (x%
/ y% * 5) + 32
‘ Schleife Verlassen
wenn ESC gedrückt wurde
LOOP UNTIL k$ =
CHR$(27)
‘ Ende
END
Hier ist nun noch ein kleines Beispielprogramm
für Grafikeffekte, da ich weiß, dass man eine Programmiersprache
am leichtesten mit möglichst vielen Beispielen lernen kann.
' Kleines Beispielprogramm
für QBasic
' von Soeren Dressler
'
' Dieses kleine
Programm soll Anfängern helfen, QBasic besser zu verstehen.
' Das Programm kann
frei manipuliert werden und zu eigenen Zwecken verwendet
' werden.
' Ich gebe aber
keine Garantie, dass das Programm fehlerfrei ist.
'
'
' Programmcode
' Hier werden Konstanten
fest gelegt
CONST ObjektAnzahl%
= 1000 ' Anzahl der Objekte
CONST Bremse&
= 100 ' Bremse
' Hier werden Variablen
dimensioniert
DIM hintergrundbild%(100,
100)
DIM ObjektX%(ObjektAnzahl%)
DIM ObjektY%(ObjektAnzahl%)
DIM ObjektRichtung%(ObjektAnzahl%)
DIM ObjektXalt%(ObjektAnzahl%)
DIM ObjektYalt%(ObjektAnzahl%)
' Der Zufallsgenerator
wird gestartet
RANDOMIZE TIMER
' ein zufälliger
Hintergrundbild wird erstellt.
FOR y% = 0 TO 100
FOR x% = 0
TO 100
Hintergrundbild%(x%,
y%) = RND * 2 + 20
NEXT x%
NEXT y%
' Startwerte der
Objekte werden zufällig festgelegt.
FOR n% = 0 TO ObjektAnzahl%
ObjektX%(n%) = RND * 310 + 3
ObjektY%(n%) = RND * 190 + 3
ObjektRichtung%(n%) = RND * 3 + 1
NEXT n%
' Grafikmodus 13
SCREEN 13
' Hier kann der Hintergrund
gemalt werden
'FOR y% = 0 TO 199
' FOR x% = 0 TO
319
' PSET (x%,
y%), Hintergrundbild%(x% MOD 100, y% MOD 100)
' NEXT x%
'NEXT y%
' Öffne Do-Schleife
DO
' Speichere Taste
auf k$
k$ = INKEY$
FOR n% = 0 TO ObjektAnzahl%
ObjektXalt%(n%) = ObjektX%(n%)
ObjektYalt%(n%) = ObjektY%(n%)
SELECT CASE ObjektRichtung%(n%)
CASE 1
ObjektX%(n%) = ObjektX%(n%) + 1
ObjektY%(n%) = ObjektY%(n%) + 1
IF ObjektX%(n%) = 319 THEN ObjektRichtung%(n%) = 2
IF ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 4
IF ObjektX%(n%) = 319 AND ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 3
CASE 2
ObjektX%(n%) = ObjektX%(n%) - 1
ObjektY%(n%) = ObjektY%(n%) + 1
IF ObjektX%(n%) = 0 THEN ObjektRichtung%(n%) = 1
IF ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 3
IF ObjektX%(n%) = 0 AND ObjektY%(n%) = 199 THEN ObjektRichtung%(n%) = 4
CASE 3
ObjektX%(n%) = ObjektX%(n%) - 1
ObjektY%(n%) = ObjektY%(n%) - 1
IF ObjektX%(n%) = 0 THEN ObjektRichtung%(n%) = 4
IF ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 2
IF ObjektX%(n%) = 0 AND ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 1
CASE 4
ObjektX%(n%) = ObjektX%(n%) + 1
ObjektY%(n%) = ObjektY%(n%) - 1
IF ObjektX%(n%) = 319 THEN ObjektRichtung%(n%) = 3
IF ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 1
IF ObjektX%(n%) = 319 AND ObjektY%(n%) = 0 THEN ObjektRichtung%(n%) = 2
END SELECT
' Male Hintergrund auf alter Position
PSET (ObjektXalt%(n%), ObjektYalt%(n%)), hintergrundbild%(ObjektXalt%(n%)
MOD 100, ObjektYalt%(n%) MOD 100)
' Male Objekt
PSET (ObjektX%(n%), ObjektY%(n%)), (ObjektX%(n%) / 7 + ObjektY%(n%) / 8
+ 32)
NEXT n%
' Bremse
FOR pause& =
0 TO Bremse&: NEXT pause&
' Verlasse Schleife,
wenn ESC gedrückt wird.
LOOP UNTIL INKEY$
= CHR$(27)
' Ende
END
So das war’s. Ich hoffe, dass es den einen
oder Andreren weiter geholfen hat.
Neuvorstellung
von Victory of the Stars 2
Wie man bereits aus dem Titel entnehmen
kann, handelt es sich bei diesem Spiel um den Zweiten Teil der Spaceshoter-Serie
von GvM Entertainment.
Dieses Spiel muß sich aber nicht
hinter seinem Vorgänger verstecken.
Ganz im Gegenteil. Vots2 wurde nicht nur
in seiner Optik sondern auch im Handling und ganzen Spielaufbau verbessert.
Der Spieler hat entweder die Möglichkeit,
ein freies Spiel zu wählen und damit den Computergegner selber einzustellen
oder in einem Campaignmodus mit Story zu Spielen.
Im Mittelpunkt stehen eine außerirdische
Rasse, die sich Tareaner nennen und die Erde angreifen.
Der Spieler, welcher in die Rolle des
Helden schlüpft, ist selbstverständlich die einzige Hoffnung
für die Menschheit.
Wehrend des Campainmodus hat man immer
wieder die Möglichkeit zwischen maximal Zwei Missionen zu wählen.
Dabei ändert sich jeweils das ziel der Mission.
Vorwiegendes Ziel ist es aber immer zu
überleben.
Damit der Spieler jederzeit an seine letzte
Position zurückkehren kann , gibt es im Menü die Möglichkeit,
das Spiel ab zu speichern oder zu laden.
Das Spiel selbst läßt sich
nun sehr viel besser steuern als sein Vorgänger, da es keine Verzögerung
mehr bei der Tastatur gibt.
Im Ganzen ist das Spiel schon sehr gut
gelungen und wenn GvM Entertainment die Entwicklung abgeschlossen hat,
wird es selbstverständlich auf der Homepage des QBasic-Clubs zum Download
angeboten.
Soeren Dressler über Victory of the
Stars 2 von GvM Entertainment
Was ist eigentlich Assembler?
Wie jeder Programmierer versteht der Computer
nur eine Maschinensprache, die so komplex und so schwierig ist, dass sie
von keinem Menschen erlernt werden kann.
Deswegen wurden Programmiersprachen wie
QBasic, Turbo-Pascal oder C entwickelt, die in der Lage waren, eine für
den Menschen verständlichen Sprache in Maschinensprache um zu
wandeln s.g. compilieren.
Besonders hohe Programmiersprachen, also
welche, die für den Menschen besonders einfach sind aber von der Maschinensprache
sehr weit entfernt sind, wie QBasic, haben aber den Nachteil, dass sie
sehr langsam sind.
Je niedriger eine Programmiersprache ist,
desto näher kommt sie der Maschinensprache.
Assembler ist die niedrigste Programmiersprache
die es für des PC gibt.
Assembler ist nun dadurch sehr schnell
aber eben auch nicht sehr einfach zu verstehen.
Es ist auch keine übliche Programmiersprache,
da schon sehr einfache Programme unglaublich aufwendig zu schreiben sind.
Es wird eher als Librarie für andere Programmiersprachen benutzt.
Wenn man nun mit Assembler arbeiten will,
sollte man wissen, dass man nur 4 Variablen zu Verfügung hat.
Es gibt zwar noch mehr Variablen, aber
diese haben feste Aufgaben.
Wenn ich nun sage “Variablen“, dann ist
das so nicht ganz richtig.
Es sind Register aus dem Prozessor.
Sie heißen AX,
BX, CX und DX.
A wie Accumulator
B wie Base
C wie Count
D wie Data
Es sind alles 16Bit Register. Also so ähnlich wie Integer in QBasic.
Den ersten und wichtigsten Befehl in ASM
ist „MOV“.
Dieser kopiert den zweiten Wert in den
ersten.
Bsp.:
MOV
AX, BX
In diesem Beispiel wird der Wert aus BX
nach AX kopiert.
Oder:
MOV
CX, 7h
In diesem Beispiel erhält CX
den Wert 7.
Oder:
MOV
DX, 0h
In diesem Beispiel erhält DX
den Wert 0.
Ich denke das sollte soweit klar sein
Kommen wir nun zur Addition.
Addition war das mit dem „+“
Bei ASM geht das mit „ADD“.
Dabei wird der zweite Wert zum ersten
dazu addiert.
Bsp.:
MOV
AX, 1h
ADD
AX, 5h
In diesem Beispiel wird zuerst AX = 1
gesetzt und dann wird 5 dazu addiert.
Was uns zu dem Schluß kommen läßt,
dass AX den Wert 6 hat.
Um einfach mal zu überprüfen, ob du dass nun verstanden hast, ist hier ein kleiner Test.
MOV AX,
2h
MOV
BX, AX
ADD
AX, BX
Was ist nun in AX?
Richtig! 4
Hey, du bist gut.
Es gibt aber noch mehr Sachen. Da ist z.B.
die Subtraktion.
Du weißt schon, das mit dem „-“
Der Befehl ist „SUB“
Dabei wird der zweite Wert vom ersten
abgezogen.
Bsp.:
MOV
AX, 9h
SUB
AX, 3h
Erst wurde AX mit 9 belegt und dann
wurde 3 abgezogen.
Wenn ich mich nicht irre hat AX nun den
Wert 6.
Des weiteren gibt es noch einen Befehl
um das Register um 1 zu erhöhen.
Der Befehl lautet „INC“
das kommt vom englischen „increment“ (Zunahme)
Bsp.:
MOV
AX, 3h
INC
AX
Erst wird AX mit 3 belegt und dann um
1 erhöht.
Es gibt aber auch einen Befehl, um ein
Register um 1 zu vermindern.
Das ist dann „DEC“
von englischen „decimate“ (dezimieren).
Bsp.:
MOV
AX, 7h
DEC
AX
Die 7 in AX wir um 1 vermindert. Es ist
also nur noch 6.
Nun zum Abschluß noch en kleiner Test.
MOV AX,
5h
MOV
BX, 7h
ADD
AX, 3h
SUB
AX , BX
DEC
AX
MOV
AX, BX
DEC
BX
INC
AX
Was ist nun AX?
Wenn du glaubst, es ist 8
dann liegst du richtig.
Wenn du dich nun fragst, wozu das eigentlich gut ist, kann ich nur sagen, dass das Grundlage ist um mit Assembler zu arbeiten.
Jeder kennt das Problem:
QBasic unterstützt keine Mouse.
Es gibt zwar einige Programme im Internet,
mit denen man eine Mouse in seinem Programm einbauen kann. Diese enthalten
aber meist den Quellcode in Maschinensprache, so dass man immer gezwungen
ist ein fremdes Programm mit Subs und Funktionen in sein eigenes ein zu
bauen. Häufig sind diese auch nicht besonders benutzerfreundlich,
da sie nur mit „Call Interrupt“ arbeiten, was besonders unerfahrenen Programmieren
arges Kopfzerbrechen bereitet.
Zudem kommt, dass Erklärungen nur
in englischer Sprache sind, was bei den jüngeren Programmieren
doch noch nicht ganz so beliebt ist.
Aber es gibt nun auch eine deutsche Mouselibrarie
für QBasic4.5.
Sie heißt MousePro und ist vollständig
in Deutsch. Na gut, die Befehle sind Englisch . Aber dafür unterstützt
sie massenweise Befehle.
Zum Standart gehört natürlich
das An- und Ausschalten des Mouscursors und das Erkennen der X- und
Y-Position sowie der Button.
Besondere Feature sind zum Beispiel das
festlegen eines Aktionsraumes der Mouse oder eine einfache
Neupositionierung des Cursors.
Selbst die horizontale und vertikale Geschwindigkeit
kann bestimmt werden.
Aber als absolute Neuerung ist veränderbare
Mousecursor. Diese Cursor können mit dem CursorEdit erstellt werden.
Oder, wer zu faul ist selber einen Cursor zu malen, kann sich aus den Beispielen
einen aussuchen.
In der Neuesten Version 1.41 kann man
nun auch die Mousetroutine auf Screen 13 umschalten, wodurch das
lästige umrechnen wegfällt.
Außerdem kann man sich bis zu 5
vorinstallierten Mousecursor aussuchen. Der Cursor wird bei der Änderung
nun auch immer mit aktualisiert.
Fehler, die durch versehentliches Mehrfach-
aktivieren bzw. deaktivieren auftreten können wurden beseitigt,
da die MousePro selbst kontrolliert ob der Mousezeiger bereits sichtbar
ist oder nicht.
MousePro ist ein Freeware, was es dem Programmierer
erlaubt, die Software frei zu nutzten und auch weiter zu geben. Das bedeutet
auch, das MousePro auf anderen Homepages veröffentlicht werden darf.
Bis zum nächsten Mal!