MyMouse		Verbesserte Kontrolle der Maus durch eigene Serviceroutinen.
ver 1.60	Copyright (c) 1993 by Matthias Kppe.

-----------------------------------------------------------------------------

1. Allgemeines
--------------

MyMouse ist eine Turbo-Pascal-Unit und dient der verbesserten Kontrolle der
Maus in Pascal-Programmen.

Die Unit MyMouse enthlt eigene Routinen zur Darstellung des Mauszeigers.
Dadurch erffnet sie ganz neue Mglichkeiten:

 1. Untersttzung grerer Mauszeiger.

      Herkmmliche Maustreiber untersttzen nur Mauszeiger der Gre 16 x 16
      Pixel. Die Standardgre von Zeigern von MyMouse betrgt 16 x 32 Pixel,
      aber selbst Zeiger der Gre 64 x 64 stellen noch nicht die obere
      Schranke dar.

 2. Bereitstellung mehrerer eingebauter Mauszeigerformen.

      * Mauspfeil in Windows-Gre
      * Sanduhr
      * verschiedene Kreuze

 3. Flexible Untersttzung selbstdefinierter Mauszeigerformen.

      Selbstdefinierte Mauszeiger knnen in MyMouse sehr einfach eingesetzt
      werden.

 4. Untersttzung der automatischen Anpassung an Bedienelemente.

      MyMouse untersttzt die automatische Anpassung der Mauszeigerform, wenn
      der Mauszeiger ber bestimmte Bildschirmbereiche (z.B. Fenster) fhrt.

 5. Untersttzung von verschiedenen Mauszeigerfarben.

      Herkmmliche Maustreiber untersttzen nur weie Mauszeiger; mit MyMouse
      entfllt diese Einschrnkung.

 6. Untersttzung von SVGA-Modi (800x600x16 Farben und alle 256-Farben-Modi).

      Kaum ein Maustreiber untersttzt unter DOS die hochauflsenden Modi der
      SVGA-Karten. MyMouse aber nutzt das flexible Graphikprotokoll Gr und
      kann dadurch mit allen SVGA-Karten arbeiten.

 7. Untersttzung eigener Serviceroutinen fr die Maus.

      Damit knnen Sie auf einfache Weise Ihre Wnsche bei der
      Zeigerdarstellung realisieren.

 8. Zusammenarbeit mit dem Borland Graphics Interface (BGI).

      Obwohl MyMouse direkt auf die VGA-Karte zugreift, um eine optimale
      Geschwindigkeit zu erreichen, ist es 100% kompatibel mit dem BGI.

 9. Entflackerungs-Logik

      MyMouse verwendet jetzt ein leistungsfhiges Verfahren zum
      Entflackern der Cursor-Darstellung.

MyMouse bietet leistungsfhige Routinen zur Kontrolle von Bildschirmbereichen
und -seiten an.

10. Untersttzung der MouseArea.
      Mit MyMouse knnen Sie auf einfache Weise die Maus einsperren.
11. Untersttzung der MousePage.
      MyMouse untersttzt die 2. Bildschirmseite.
12. Untersttzung der CriticalArea und der CriticalPage.
      In MyMouse knnen Sie den Bereich und die Seite festlegen, in denen
      graphische Operationen stattfinden. Nur wenn die Maus sich dort
      befindet, wird sie versteckt.

Die Unit MyMouse arbeitet eng mit der Turbo-Vision-Unit Drivers zusammen.
Dadurch erreicht sie ein hohes Ma an Kompatibilitt.

13. Erzeugung Drivers-kompatibler Mausereignisse.
      Die Prozedur GetMouseEvent erzeugt Ereignisse, die vollstndig
      kompatibel zu der Unit Drivers sind. Daher mssen bestehende Programme
      in keiner Weise verndert werden.
14. Erzeugung von Zeitgeber-Ereignissen.
      Die Prozedur GetTimerEvent erzeugt eine neue Ereignisklasse (evTimer),
      wenn seit dem letzten Aufruf ein Zeitgeberinterrupt erfolgte, also
      1/18.2 sec vergangen sind.
15. Kompakter Code durch Nutzung von Drivers-Funktionen.
      MyMouse reiht Mausereignisse in die Warteschlange der Unit Drivers ein
      und benutzt viele ihrer Variablen.
16. Verwendung der Einstellungen der Unit Drivers.
      Sie knnen nach wie vor die Variablen MouseReverse, DoubleDelay,
      RepeatDelay verwenden.
17. Einstellung des DoubleSpeedTreshold.
      Mit MyMouse knnen Sie diesen Wert ber eine Pascal-Prozedur einstellen.

MyMouse arbeitet im Treiber-Modus mit allen Maustypen zusammen. Microsoft-
und Mouse-Systems-kompatible Muse werden aber auch direkt (treiberunabhngig)
untersttzt. Dabei werden die Schnittstellen, Unterbrechungsanforderungen und
Betriebsarten automatisch erkannt und flexibel untersttzt.


2. Prozeduren und Funktionen
----------------------------

procedure SetMouseMode(AMode: Word);

  Diese Prozedur setzt die Mausbetriebsart. Sie ist vor InitMyMouse
  aufzurufen. In folgender Tabelle sind die Betriebsarten aufgestellt.

  mmDriver	berlt dem Maustreiber die Auswertung der Maussignale und
		der Unit Drivers die Bereitstellung der Mausereignisse.
		Plaziert eine Serviceroutine zwischen Treiber und Drivers,
		die die Koordinaten aufbereitet und den Mauszeiger darstellt.
		* In diesem Modus arbeitet MyMouse mit allen Musen
		  zusammen. Dies ist der voreingestellte Modus.
  mmMicro	berlt der Unit Drivers die Bereitstellung der Mausereig-
		nisse, wertet jedoch die Signale der Maus direkt aus. Voraus-
		gesetzt wird, da eine Microsoft-Maus angeschlossen ist.
  mmSystem      berlt der Unit Drivers die Bereitstellung der Mausereig-
		nisse, wertet jedoch die Signale der Maus direkt aus. Voraus-
		gesetzt wird, da eine Mouse-Systems-Maus angeschlossen ist.
  mmAuto	Ermittelt durch einen Aufruf des Treibers, ob Microsoft- oder
		Mouse-Systems-Maus angeschlossen ist, und wertet die Signale
		der Maus entsprechend direkt aus. berlt der Unit Drivers
		die Bereitstellung der Mausereignisse.

  In den drei direkten Modi knnen ferner Portvorgaben getroffen werden. Die
  in folgender Tabelle aufgestellten Konstanten sind zu dem Modus zu
  addieren.

  mmPortAuto	Ermittelt durch einen Aufruf des Treibers, an welcher der
		beiden seriellen Schnittstellen die Maus angeschlossen ist.
  mmPort1       Gibt vor, da die Maus an der Schnittstelle COM1
		angeschlossen ist.
  mmPort2	Gibt vor, da die Maus an der Schnittstelle COM2
		angeschlossen ist.

  In diesen Modi knnen auerdem die Unterbrechungsanforderungen bestimmt
  werden.

  mmIRQAuto	Ermittelt durch einen Aufruf des Treibers, welche Unterbre-
		chungsanforderung verwendet wird.
  mmIRQ(n)      Gibt vor, da die Unterbrechunganforderung n verwendet wird.

  Zudem knnen die folgenden Flags gesetzt werden:

  mmNoClk	Schaltet die Entflackerungslogik aus. MyMouse verwendet
		normalerweise die Strahlrcklauf- und Fast-Timer-Interrupts,
		um das entflackernde Timing zu erzielen. Beim Debugging von
		Programmen knnen dadurch Probleme entstehen.

procedure InitMyMouse;

  Diese Prozedur initialisiert MyMouse. Es ist nicht erforderlich, die
  Graphik zuvor zu initialisieren: MyMouse reagiert auf Botschaften von
  Gr.InitGraphics und aktiviert sich dann selbstttig.

  Wenn InitEvents noch nicht aufgerufen wurde, wird dies von InitMyMouse
  vorgenommen. Ferner wird der Mauszeiger des Treibers versteckt und der
  eigene Mauszeiger angezeigt.

  Die Mausbetriebsart mu VOR dem Aufruf von InitMyMouse gesetzt werden. Nach
  dem Aufruf ist SetMouseMode ohne Funktion.

  Rufen Sie InitMyMouse vor der VgaMem-Routine InitVgaMan auf. Letztere
  Routine allokiert den gesamten VGA-Restspeicher fr eigene Zwecke. MyMouse
  bentigt aber auch einen kleinen Teil des Restspeichers.

procedure DoneMyMouse;

  Diese Prozedur beendet MyMouse. Man vermeide es, Programme zu beenden,
  ohne DoneMyMouse zu nutzen.

  Es ist nicht erforderlich, MyMouse zu beenden, bevor mittels CloseGraphics
  in einen Textmodus umgeschaltet wird: MyMouse reagiert auf Botschaften
  von Gr.CloseGraphics und deaktiviert sich entsprechend.

  Wenn InitEvents vor dem Aufruf von InitMyMouse nicht aufgerufen worden war,
  wird durch DoneMyMouse auch DoneEvents aufgerufen.

function MouseInstalled: Boolean;

  Diese Funktion ermittelt true, wenn eine Maus angeschlossen ist und MyMouse
  initialisiert werden kann.

procedure ReserveMouseSeg;

  Diese Prozedur alloziert Speicher fr den Zeigerhintergrund.
  Sie sollten diese Prozedur nicht aufrufen; denn alle Speichermanagement-
  Funktionen werden automatisch durchgefhrt.

procedure SetBGIMode(Driver, Mode: Integer);

  Mit dieser Prozedur kann der Gr-Modus indirekt gesetzt werden, indem die
  Parameter der Prozedur Graph.InitGraph angegeben werden.
  Dieses Vorgehen ist veraltet und wird nicht empfohlen.

procedure GetMouseEvent(var Event: TEvent);

  Diese Prozedur ruft Drivers.GetMouseEvent auf, um ein Mausereignis zu
  ermitteln.

procedure GetTimerEvent(var Event: TEvent);

  Erzeugt ein Ereignis des Typs evTimer (Neudefinition), wenn seit dem
  letzten Aufruf mindestens 1/18.2 s vergangen sind (also ein Timerinterrupt
  erfolgte). Das Feld InfoWord wird dann mit dem Inhalt des Zeitzhlers
  geladen.

procedure SetMousePos(x, y: Integer);

  Bewegt den Mauszeiger zu der angegebenen Position. Veranlat evtl.
  notwendige Neudarstellung des Mauszeigers.

procedure SetMouseArea(x1, y1, x2, y2: Integer);

  Diese Prozedur setzt den Bereich, in welchem sich die Maus aufhalten darf.
  Verwendet ist Turbo-Vision-Notation, d.h. die Koordinaten x2, y2 liegen
  genau auerhalb des zulssigen Bereiches. Veranlat evtl. Neudarstellung
  des Mauszeigers.

procedure SetMousePage(Page: Byte);

  Diese Prozedur setzt die Bildschirmseite, auf der die Maus dargestellt
  wird. Veranlat evtl. Neudarstellung des Mauszeigers.

procedure SetCriticalArea(x1, y1, x2, y2: Integer);

  Diese Prozedur setzt den Bereich, in welchem HideMouse und ShowMouse eine
  Wirkung haben sollen. Dieser Bereich sollte (speziell in graphischen Ober-
  flchen) auf den wirklichen Zeichenbereich beschrnkt werden, um Flackern
  des Mauszeigers zu verhindern. Veranlat evtl. Neudarstellung bzw. Entfer-
  nung des Zeigers. Verwendet ist Turbo-Vision-Notation, d.h. die Koordinaten
  x2, y2 liegen genau auerhalb des Bereiches.
  Bitte beachten Sie, da Sie nur den von Ihren Graphikroutinen modifizierten
  Bereich angeben. Die Ausdehnung des Cursors wird von MyMouse selbstndig
  bercksichtigt.

procedure SetCriticalPage(Page: Byte);

  Diese Prozedur setzt die Bildschirmseite, auf der HideMouse und ShowMouse
  eine Wirkung haben sollen. Veranlat evtl. Neudarstellung des Mauszeigers.

procedure SetMCursor(n: Integer);

  Diese Prozedur whlt die zu verwendende Zeigerform aus. Man verwende dazu
  die Konstanten mcXXXX.

  Sie knnen SetMCursor auch innerhalb einer ChangeCursor-Routine verwenden.
  Dadurch ist kein direkter Zugriff auf die Variable NewNum mehr erforderlich.
  Um Kompatibilitt zu spteren Versionen von MyMouse zu wahren, sollte kein
  direkter Zugriff auf NewNum mehr erfolgen.

procedure SetPointerColor(AColor: Byte);

  Diese Prozedur setzt die zu verwendende Zeigerfarbe.

  Sie knnen SetPointerColor auch innerhalb einer ChangeCursor-Routine
  verwenden. Dadurch ist kein direkter Zugriff auf die Variable PointerColor
  mehr erforderlich.
  Um Kompatibilitt zu spteren Versionen von MyMouse zu wahren, sollte kein
  direkter Zugriff auf PointerColor mehr erfolgen.

procedure SetCursorPtr(p: pointer);

  Diese Prozedur setzt einen Mauscursor durch die Angabe eines Zeigers auf
  eine Cursor-Struktur.

  Sie knnen SetPointerColor auch innerhalb einer GetMCursor-Routine
  verwenden. Dadurch ist kein direkter Zugriff auf die Variable CursorPtr
  mehr erforderlich.
  Um Kompatibilitt zu spteren Versionen von MyMouse zu wahren, sollte kein
  direkter Zugriff auf CursorPtr mehr erfolgen.

procedure ShowMouse;

  Diese Prozedur erhht einen internen Zhler (MouseHidden) um 1. Wurde 0
  erreicht, wird der Mauszeiger angezeigt. Entspricht der gleichnamigen
  Drivers-Prozedur. Ist MyMouse nicht aktiv, wird Drivers.ShowMouse
  aufgerufen.

procedure HideMouse;

  Diese Prozedur erniedrigt MouseHidden um 1 und versteckt die Maus, wenn
  notwendig (d.h. wenn der Zeiger die CriticalArea beeintrchtigt). Entspricht
  der gleichnamigen Drivers-Prozedur. Ist MyMouse nicht aktiv, wird Drivers.
  HideMouse aufgerufen.

procedure SetDoubleSpeedTreshold(Value: Word);

  Diese Prozedur setzt den Wert des DoubleSpeedTreshold. Dieser gibt die
  relative Geschwindigkeit der Maus an, die erreicht werden mu, damit
  die Geschwindigkeit des Zeigers verdoppelt wird.


Folgende Routinen sind semi-intern. Sie sind nur im Interface, damit sie von
Service-Routinen zur Darstellung des Zeigers verwendet werden knnen.

procedure MSaveRegs;

  Speichert die VGA-Register, die von den Service-Routinen verndert werden.

procedure MRestoreRegs;

  Stellt diese VGA-Register wieder her.

procedure MakeContain(var P: TPoint; R: TRect);

  Verndert die Koordinaten des angegebenen Punktes derart, da
  er innerhalb des Rechtecks liegt.


3. Variablen
------------

Bezeichner	Typ	Erklrung				Anmerkungen
---------------	-------	---------------------------------------	-----------
MouseMode	Word	Aktuelle Mausbetriebsart 		R/O
ButtonCount	Byte	Anzahl der Maustasten			R/O   DRI
MouseSaveSeg	Word	Real-Mode-Segment fr Zeigerhintergrund R/O
MouseSavePtr	pointer	Adresse des Speichers fr Hintergrund	R/O
MouseSavePOfs	Word	(Offset-Anteil)				R/O
MouseSavePSeg	Word	(Segment-Anteil)			R/O
MouseWhere	TPoint	Maus-Koordinaten			R/O   DRI
MouseButtons	Byte	Tasten-Status				      DRI
MouseArea	TRect	Maus-Arbeitsbereich			R/O
MousePage	Byte	Maus-Bildschirmseite			R/O
MousePagePtr	pointer	Adresse der Maus-Bildschirmseite	R/O
MousePageLinear	LongInt	Lineare Bildadresse der Maus-Seite	R/O
CriticalArea	TRect	Kritischer Bereich			R/O
CrticalPage	Byte	Kritische Bildschirmseite		R/O
CursorNum	Word	Aktuelle Zeigerform			1
CursorPtr	pointer	Zeiger auf aktuellen Zeigerbitmap	1
NewNum		Word	Neue Zeigerform				2
PointerColor	Byte	Aktuelle Zeigerfarbe			R/O
MouseHidden	Integer	Interner HideMouse-ShowMouse-Zhler	R/O
MaxWidth	Byte	Maximale Zeigerbreite in Datenbytes	3
MaxLength	Byte	Maximale Zeigerlnge in Pixel		3
DoubleDelay	Word    (siehe Reaktionszeiten)			      DRI
RepeatDelay	Word	(siehe Reaktionszeiten)			      DRI
AutoDelay	Word	(siehe Reaktionszeiten)			      DRI
DoubleSpeed-	Word	Relative Mausgeschwindigkeit zur	R/O
   Treshold		Verdopplung der Zeigergeschwindigkeit
AutoSpeed	Word	ohne Funktion, fr Kompatibiltt
ChangeCursor	proc	Zeigeranpassung
GetMCursor      TGetMC#	Ermittlung von Zeigerbitmaps
DrawMouse	proc	Zeigerdarstellung
SaveScreen	proc	Hintergrund-Speicherung
RestoreScreen	proc	Hintergrund-Wiederherstellung
SaveLatches	proc	Latches-Speicherung
RestoreLatches	proc	Latches-Wiederherstellung
Port1		Word	Portadresse der COM1-Schnittstelle	      40H
Port2		Word	Portadresse der COM2-Schnittstelle	      40H

Erluterung der Krzel

R/O	READ-ONLY: Diese Variable darf nicht direkt modifiziert werden.
	Verwenden Sie dazu die entsprechenden Routinen.
DRI     Diese Variable ist ABSOLUTE zu einer (meist gleichnamigen)
	Variable der Unit Drivers deklariert.
40H	Diese Variable ist ABSOLUTE zu einer Speicherstelle im BIOS-
	Datensegment 40H deklariert.
1	Diese Variable darf nur in einer GetMCursor-Serviceroutine
	gesetzt werden. Um Kompatibilitt mit spteren Versionen zu
	wahren, sollten Sie diese Variable nicht direkt setzen.
2	Diese Variable darf nur in einer ChangeCursor-Serviceroutine
	gesetzt werden. Um Kompatibilitt mit spteren Versionen zu
	wahren, sollten Sie diese Variable nicht direkt setzen.
3	Diese Variablen sind vor dem Aufruf von InitMyMouse zu setzen.

Reaktionszeiten

Lesen Sie zu den Reaktionszeiten die Dokumentation der entsprechenden
Variablen der Unit Drivers. Im Gegensatz zu frhreren Versionen von MyMouse
erzeugt diese Unit alle Mausereignisse, so da die Drivers-Reaktionszeiten
einzustellen sind.
Die Reaktionszeit AutoDelay ist eine andere Bezeichnung fr RepeatDelay.
Sie wird zu Kompatibilittszwecken bereitgestellt.
Die Variable AutoSpeed diente in frheren Versionen der Steuerung des
Abstandes von evMouseAuto-Ereignissen. Dies wird nicht mehr untersttzt, da
die Unit Drivers jetzt fr die Ereigniserzeugung verantwortlich ist.


4.  Erstellen eigener Mauscursorformen
--------------------------------------

Die globale prozedurale Variable GetMCursor zeigt auf eine Prozedur, die in
die Variable CursorPtr einen Zeiger auf den Mauscursor eintrgt. Die Nummer
der gewnschten Zeigerform wird als Parameter bergeben. Der Mauscursor mu
in folgender Form vorliegen:

  - 2 Byte Lnge des Mauscursors in Pixel
  - 2 Byte Breite des Mauscursors in 8 Pixel
  - jeweils 2 Byte fr Hotspot x und y
  - ScreenMask (genau so viele Bytes, wie bentigt)
  - PixelMask (genau so viele Bytes, wie bentigt)

Standardgem zeigt GetMCursor auf eine Prozedur in MyMouse. GetMCursor hat
die Form procedure(n: Integer) und ist far zu deklarieren. Wollen Sie eine
eigene Prozedur definieren, so sind folgende Aktionen vorzunehmen:

   (a) Feststellen, ob gewnschter Mauszeiger (Parameter) ein von Ihnen unter-
       sttzter ist.
   (b) Wenn ja, dann mssen Sie CursorPtr und CursorNum setzen.
   (c) Ansonsten rufen Sie die alte Routine auf.

Nach Aufruf von MyMouse ist lediglich die alte Routine in einer prozeduralen
Variablen gleichen Typs zu speichern und GetMCursor auf Ihre Routine setzen.
Dadurch wird Ihre Routine (und damit Ihre Mauszeigerformen) u.a. bei
SetMCursor bercksichtigt. Vergessen Sie nicht, eigene Konstanten fr die
Mauszeiger zu definieren, so da Sie bequem auf sie zugreifen knnen (mcXXXX).

Informationen zu den Mauscursorformen
-------------------------------------

In MyMouse knnen Mauszeiger beliebig breit und hoch werden. Je grer
Mauszeiger werden, desto mehr Speicherplatz wird fr die Speicherung des
Zeigerhintergrundes bentigt. Aus diesem Grund ist die Gre der Mauszeiger
standardmig auf 16 x 32 Pixel begrenzt.
Verndern Sie VOR dem Aufruf von InitMyMouse die Variablen MaxWidth und
MaxLength entsprechend den Erfordernissen der von Ihnen verwendeten
Mauszeiger.
Erfahrungsgem sind grere Mauszeiger als 64 x 64 Pixel nicht mehr
sinnvoll. Beachten Sie ferner, da im 256-Farben-Modus die Breite der
Mauszeiger auf 16 Pixel begrenzt ist.

Der HotSpot gibt den Punkt innerhalb des Mauscursors an, der tatschlich
"gezeigt wird" - fr Fadenkreuze liegt er gewhnlich in der Mitte, fr den
normalen Pfeil links oben.

Durch ScreenMask und PixelMask wird das Aussehen des Cursors bestimmt.
In der ScreenMask gesetzte Bits fhren dazu, da die entsprechenden Pixel
schwarz werden. Die PixelMask wird mit dem Bildschirm XOR-verknpft. Damit
lassen sich folgende 4 Manipulationen erzielen:

  SM  PM    Manipulation
  0   0     keine
  0   1     Invertierung des Bildpunkts
  1   0     schwarz
  1   1     wei

Die Bits sind so den Bildpunkten zugeordnet, da ein Wort in Binrschreibweise
direkt auf den Bildschirm "projiziert" werden kann (hherwertige Bits links).

Bitte sehen Sie sich zum besseren Verstndnis die Quelltexte der Beispielpro-
gramme an.


5.  Automatische Anpassung des Cursors an Bedienelemente
--------------------------------------------------------

In graphischen Oberflchen ist es mitunter dienlich, den Mauscursor an das
Bedienelement anzupassen, ber dem er sich gerade befindet. Dies ist mit
MyMouse ohne Probleme mglich; allerdings mssen Sie eine entsprechende
Kontrollroutine selbst programmieren.

Die prozedurale Variable ChangeCursor zeigt im Standardzustand auf eine
Prozedur, die nur CursorNum in NewNum kopiert. Wenn Sie eine eigene (globale
und far deklarierte) Prozedur geschrieben haben, dann knnen Sie ChangeCursor
darauf setzen.
Diese Prozedur mu lediglich in Abhngigkeit von den Mauskoordinaten in
MouseWhere die Variable NewNum (neue Cursornummer) setzen. Dies sollte nicht
direkt geschehen, sondern unter Zuhilfenahme von MyMouse.SetMCursor.

6.  Verwendung eigener Serviceroutinen
--------------------------------------

Drei prozedurale Variablen speichern die Prozeduren, die die eigentliche
Arbeit verrichten:

  DrawMouse		Zeichnet die Maus.
  SaveScreen		Rettet den Hintergrund.
  RestoreScreen		Stellt den Hintergrund wieder her.
  SaveLatches		Speichert die VGA-Latches.
  RestoreLatches	Stellt die Latches wieder her.

Die Verwendung eigener Serviceroutinen geschieht auf eigene Gefahr! Speziell
die Anwendung von BGI-Routinen innerhalb der Serviceroutinen ist nicht
getestet!

-----------------------------------------------------------------------------
				Neu in Version 1.6
-----------------------------------------------------------------------------

1. MyMouse untersttzt jetzt alle hochauflsenden 256-Farben-Modi durch
   Ausnutzung des VESA-Protokolls.
2. Entflackerungs-Logik.
3. Intelligente Reaktion auf Graphikmodus-Umschaltung.
4. Doppelpufferung von Hardware-Ereignissen.

-----------------------------------------------------------------------------
				Neu in Version 1.5
-----------------------------------------------------------------------------

1. MyMouse arbeitet jetzt im Treiber-Modus mit allen Musen zusammen.
2. MyMouse untersttzt jetzt auch Mouse-Systems-Muse direkt.
3. Mauszeiger knnen jetzt auch beliebig breit werden.
4. Der Code von MyMouse ist kompakter und schneller geworden.
5. MyMouse-Ereignisse stimmen jetzt vollstndig mit Drivers-Ereignissen
   berein.
6. MyMouse arbeitet jetzt auch dann mit MS Windows zusammen, wenn die
   Anwendung im erweiterten Modus fr 386-PC in einem Fenster ausgefhrt wird.
7. MyMouse untersttzt jetzt die verschiedenen Schnittstellen und
   Unterbrechungsanforderungen noch flexibler.
8. MyMouse untersttzt neben der Mausseite auch eine kritische Seite.
9. Neue Routinen vereinfachen die Handhabung:
   SetMousePos, SetPointerColor, SetDoubleSpeedTreshold etc.

