History
==========================================================================
Date      Beschreibung
--------------------------------------------------------------------------
21-05     Version 1.20
--------------------------------------------------------------------------
          - Bugfix: Bei der Listbox werden jetzt Eintrge, die lnger sind
            als der Ausgangstext, abgeschnitten. Ausserdem knnen jetzt
            die Listboxen nicht mehr auerhalb des Bildschirms erscheinen.

          - Bugfix: PopUp's knnen nicht mehr auerhalb des Bildschirms
            erscheinen.

          - Bugfix: Frames wurden unter MTOS in Monochrom nur halb ge-
            zeichnet (mist Farben...)

          - Bugfix: Unter ganz bestimmten Umstnden konnte es passieren,
            da nach TerminateSysGem eine eventuelle Alertbox nicht mehr
            erschienen ist.

          - Neue Funktion: ShortCutColor ( INT color );
            Setzt die Farbe, in der die Unterstriche gezeichnet werden.
            Standardmig auf RED gesetzt.

          - Bugfix: Unter Umstnden "bersah" die Lib den DISABLED-Status
            eines Objektes, was sich nett bemerkbar machen konnte...

          - Bugfix: Der Rckgabewert SG_TERM bei der Handler-Funktion der
            Hauptmenzeile wird nun korrekt verarbeitet und nicht mehr in
            die Tonne gelenkt...

          - Bugfix: Redrawfehler bei Popup und G_STRING behoben.

          - Feature: Wird bei DoDialog oder WindowDialog als Editfeld
            eine -2 bergeben, sucht sich SysGem das erste Editfeld im
            Dialog und setzt den Cursor entsprechend. Bei anderen Werten
            (<= 0) sind _keine_ Eingaben im Dialog mglich. Bei Werten > 0
            geht SysGem davon aus, da der Cursor in das angegebene Editfeld
            (Objektnummer) setzen soll.

          - Nachtrag: In einer Multitasking-Umgebung setzt SysGem immer
            die Programm-Id als "[xxxx]" vor den Fenstertitel, damit der
            Benutzer weis, woher denn und zu wem das Fenster gehrt. Sollte
            dies nicht gewollt sein, dann einfach ein '|' als erstes
            Zeichen fr den Fenstertitel bergeben.

          - Da manchen die berschrift "Alert" fr die Alertbox nicht
            gefallen hat, kann nun mit: SetAlertTitle ( BYTE *s ); ein
            max. 20 Zeichen langer Text angegeben werden, der dann als
            Alert-berschrift erscheint.

          - Objekte vom Typ G_ICON und G_IMAGE werden nun nicht mehr
            automatisch mit den 3D-Flags versehen. Dies scheint wohl auf
            ziemliche Kritik gestossen zu sein. Wer jetzt 3D haben will,
            mu es halt selber machen...

          - Neue Meldung: SG_MOVED. Diese wird verschickt, wenn sich die
            Lage eines Fensters gendert hat, SG_SIZED wird nur noch bei
            einer Grennderung verschickt.

            Bei SG_INVISIBLE kann nun auch SG_ABORT zurckgegeben werden,
            wenn man verhindern will, da das betreffende Fenster ausge-
            blendet wird. Alle anderen Werte fhren zum Ausblenden des
            Fensters.

          - Es war mglich, mehrere Fenster mit der gleichen Id zu ffnen,
            Wird jetzt versucht, ein Fenster zu ffnen, dessen Id es
            schon gibt, wird das jeweilige Fenster getoppt und die Funktion
            kehrt mit einem Fehler zurck. Das Fenster wird _nicht_
            geffnet.

          - LinkTree ( ..., pos );

            NOCHMAL zur Verdeutlichung: Es mssen BUME gelinkt werden;
            bei der Positionierung und Anpassung wird immer auf Element 0
            zugegriffen. Teilbume knnen in die Hose gehen!

          - WINDOW_INFO.work_area wird von fast allen Programmen benutzt,
            um die Fenstergre zu speichern. Deshalb neu eingefhrt:
            draw_area. Enthlt den Arbeitsbereich eines Fensters ohne die
            eventuell eingehngten Bume. Sollte anstatt work_area zum
            neuzeichnen benutzt werden.

          - Neue Funktion: SetWinMinSize ( LONG win_id, INT w, INT h );
            ...setzt die Minimale Gre des Fensters. Hilfreich, wenn
            Bume drin sind...

          - Neue Funktion: OpenLogWindow
            ffnet ein Fenster, in das man mit wprintf schreiben kann.
            Es knnen beliebig viele Fenster geffnet werden... Warum
            die Funktion genommen werden mu? Weil nur hier die Cursor-
            verwaltung und alles drin ist... ;-)))

          - Neue Funktion: wprintf ( LONG id, BYTE *format, ... );
            Schreibt in das (mit OpenLogWindow geffnete) Fenster mit der
            id 'Id' den angegeben String. Der Format-String ist identisch
            mit dem bei printf. Es gibt aber noch folgende ESC-Sequenzen:

            ESC p  - Fett (Invers-Ersatz) ein
            ESC q  - Fett (Invers-Ersatz) aus
            ESC +  - Unterstreichen ein
            ESC -  - Unterstreichen aus
            ESC (  - Kursiv ein
            ESC )  - Kursiv aus
            ESC e  - Cursor an
            ESC f  - Cursor aus
            ESC E  - ClearScreen; Cursor auf Ursprung (x = 0, y = 0)

          - Neue Funktion: wcls ( LONG id );
            Lscht das Fenster mit der id 'id'. Identisch mit ESC E.

          - Neue Funktion: wposxy ( LONG id, INT x, INT y );
            Positioniert den Textcursor im Fenster 'id' bei x, y.
            Fehlerhafte Koordinaten werden auf 0 gesetzt.

          - Neue Funktion: VOID wgetxy ( LONG win_id, INT *x, INT *y );
            Liefert die Position des Cursors im entsprechenden Fenster.

          - Neue Funktion: IsVisible ( INT handle );
            Liefert TRUE, wenn der Arbeitsbereich des Fensters komplett
            sichtbar ist.

          - Neue Verwaltung: Wird im Fenster mittels Arrow's gescrollt,
            verschiebt SysGem selbststndig den Fensterinhalt.

          - Neue Verwaltung: Tastendrcke ins Fenster werden jetzt etwas
            anders gehandhabt. Es wird (in dieser Reihenfolge) geprft:

            + Shortcut?
            + Fenstermenkrzel?
            + Hauptmenkrzel?
            + --> Taste an Fenster schicken. Wenn das Fenster Editfelder
                  besitzt, dann Zeichen einfgen. Ansonsten schicken...
                  Fenster braucht Taste nicht?
              --> dann SG_KEY an Hauptmenzeile, vielleicht kann die was
                  damit anfangen....

          - Neue Funktion: BYTE *LinkList ( LONG win_id, BYTE *text );
            "Hngt" eine Textliste in ein Fenster ein. Die Lib passt den
            Dokumentbereich automatisch an und kmmert sich selbststndig
            um Redraw- und Scroll-Operationen. Dabei ist win_id die Id
            des Fensters und text ein Zeiger auf den Text, der als erste
            Zeile im Fenster erscheinen soll. Es wird ein Zeiger zurck-
            geliefert, wo der Text anschlieend zu finden ist. Das [0]
            Element des Strings ist dabei zur freien Verfgung. ist der
            Wert >= 0, bernimmt SysGem den Wert nach vst_effects. Es
            knnen also einzelne Zeilen Fett, Unterstrichen usw. darge-
            gestellt werden. Ist [0] < 0, ignoriert SysGem den Wert.
            Man kann dann eigene Flags einsetzten.

          - Neue Funktion: BYTE *AddToList ( LONG win_id, BYTE *text );
            Hngt den Text an die bereits existierende Liste des Fensters
            Win_id an. Rckgabe siehe LinkText.

          - Neue Funktion: BYTE *ChgInList ( LONG win_id, INT line, BYTE *text );
            Ersetzt den Text in zeile 'line' durch 'text' im Fenster 'win_id'
            Ist 'text' == NULL, liefert die Funktion den Zeiger auf das
            [0] Element des bestehenden Textes.

          - Neue Funktion: VOID ChangeButton ( OBJECT *tree, INT obj, BYTE *text, BOOL draw );
            Ersetzt den Buttontext im Baum 'tree' durch 'text' und zeichnet,
            wenn draw == TRUE, den Button auch gleich wieder neu. Da die
            Verwaltung der Buttons in SysGem >= 1.10 eine andere als in den
            Vorgngerversionen ist, mu ein Buttontext ber diese Funktion
            gendert werden.

          - Neue Verwaltung: Bei Sliderboxen werden nun auch Nachrichten
            verschickt, damit evtl. Selektionen richtig bearbeitet werden
            knnen (hi Jan!). Dazu gibt es folgende Nachrichten:

            SG_SLID_UP
            SG_SLID_DN
            SG_SLID_MV
            SG_SLID_PGUP
            SG_SLID_PGDN

            'button' enthlt dabei die neue oberste Zeile in der Slider-
            box, dialog_info.special enthlt die objektnummer der Box,
            damit bei mehreren Sliderboxen im Dialog unterschieden werden
            kann, welche gemeint ist.

            Nach Rckkehr dieser Nachricht werden die Eintrge dann neu
            gezeichnet.

          - Neue Funktion: BYTE wgetchar ( LONG win_id, INT x, INT y, INT *effect );
            Liefert das Zeichen, da sich im Fenster 'win_id' an der
            Position x, y befindet. Ist 'effect' != NULL, enthlt sie
            nach dem Aufruf eventuell gesetzte Stati (fett etc.)

	  - Neue Funktion: Display (...);
	    Ldt eine Datei und stellt diese im Fenster dar.

          - Die Eintrge in den Listboxen werden nun wie auch bei den
            PopUp's selektiert.

          - Neue Funktion: CountLines ( LONG win_id );
            Liefert die Anzahl der Textzeilen in einem Fenster (s. LinkList)

          - Neue Funktion: DelInList ( LONG win_id, UINT line );
            Lscht die Zeile 'line' aus der Textliste.

          - Neue Funktion: do_qsort ( LONG win_id, CPROC compare );
            Sortiert die Textzeilen ohne Bercksichtigung der Stati (fett
            etc).
            Vordefiniert sind fr 'compare':
              cmp_strings_up - Aufsteigend sortieren
              cmp_strings_dn - Absteigend sortieren

          - Neue Funktion: Cycle (...)
            Nun sind auch die Cycle-Buttons drin, ohne die wahrscheinlich
            niemand leben kann (bei den Anfragen...)

          - So, das war's. Bis die nchsten Wnsche und Bugreports (hoff-
            entlich nicht...) kommen.

--------------------------------------------------------------------------
11-05     Version 1.10
--------------------------------------------------------------------------

          Die Funktionen:

          - RedrawArea
          - RedrawDialog
          - RedrawWindow
          - IsMenuKey

          sind irgendwie verschtt gegangen. Jetzt sind sie wieder da!

--------------------------------------------------------------------------
Ende der Datei.
