Version 2.10 (nderungen gegenber V2.00):
    - neue Beispiel-Programme zur Demonstration der Fenster-Routinen
      (u.a. Resource-Previewer, Clipboard-Viewer, XClipboard, Datei-Viewer)
    - Light-Version der Library durch Definition des Makros 'SMALL_EGEM'
    - Definition des View-Protokolls integriert
    - neue Funktionen:
        void SetDragDrop(int any_extension,char *exts)
             -> gewnschte/bevorzugte Dateierweiterungen fr das Drag&Drop-
                Protokoll festlegen (s. Anleitung)
        int SendDragDrop(int msx,int msy,int kstate,char *name,
                         char *ext,long size,char *data)
             -> Daten per Drag&Drop-Protokoll an die Applikation senden,
                der das Fenster unter dem Mauszeiger gehrt (s. Anleitung)
        void ob_setstate(OBJECT *tree,int object,int state);
        void ob_setflags(OBJECT *tree,int object,int flags);
            -> Objektflags/-status eines Objekts setzen
        void ob_select(DIAINFO *info,OBJECT *tree,int obj,int sel,int draw)
            -> Objekt 'obj' im Baum 'tree' in Abhngigkeit vom Parameter
               'select' (de-) selektieren und evtl. neuzeichnen (draw!=0).
        void ob_disable(DIAINFO *info,OBJECT *tree,int obj,int dis,int draw)
            -> Objekt 'obj' im Baum 'tree' in Abhngigkeit vom Parameter
               'dis' dis-/enablen und evtl. neuzeichnen (draw!=0).
        int ob_draw(DIAINFO *info,int object)
            -> Objekt 'object' des Dialogs 'info' darstellen (verkrzter
               Aufruf von ob_draw_chg(info,object,NULL,FAIL,FALSE))
        void ob_clear_edit(OBJECT *tree)
            -> Text in allen Eingabefeldern des Baums 'tree' lschen
        void menu_item_enable(int object,int enable)
            -> Men-Eintrag 'object' aktivieren (enable!=0) oder
               deaktivieren (enable==0)
        void menu_select(int title,int select)
            -> Men-Titel 'title' normal (select==0) oder invers
               (select!=0) darstellen
        void close_all_dialogs(void)
            -> alle geffneten Dialoge schlieen
        void close_all_windows(void)
            -> Alle geffneten Fenster schlieen. Sind vorher noch Dialoge
               geffnet, so werden diese ebenfalls geschlossen.
        WIN *get_top_window(void)
            -> WIN-Struktur zum obersten Fenster ermitteln
        void window_name(WIN *win,char *title,char *icon_title)
            -> Titel des Fensters 'win' setzen
            -> title:      Zeiger auf Fenstertitel oder NULL
               icon_title: Zeiger auf Fenstertitel im ikonifizierten Zu-
                           stand oder NULL
        void window_info(WIN *win,char *info)
            -> Info-Zeile des Fensters 'win' auf 'info' setzen
        int window_first(WIN *win,GRECT *rect);
        int window_next(WIN *win,GRECT *rect);
            -> Verkrzte Aufrufe von wind_xget(handle,WF_FIRSTXYWH,...)
               bzw. wind_xget(handle,WF_NEXTXYWH,...)
        void window_top(WIN *win)
            -> Fenster 'win' nach oben bringen
        void window_bottom(WIN *win)
            -> Fenster 'win' nach unten legen
        WIN *window_find(int x,int y)
            -> WIN-Struktur des Fensters an den Koordinaten (x,y)
               ermitteln
        void window_slider(WIN *win,int vh,int pos,int size)
            -> Position (pos) und Gre (size) des vertikalen
               (vh==VERT_SLIDER) oder horizontalen (vh==HOR_SLIDER)
               Sliders des Fensters 'win' setzen
        void window_size(WIN *win,GRECT *size)
            -> Ausmae des Fensters 'win' auf 'size' setzen
        void window_calc(int wctype,int kind,GRECT *in,GRECT *out)
            -> Entspricht von der Funktionalitt der AES-Funktion
               wind_calc(), nur da anstatt einzelner Parameter Zeiger
               auf GRECT-Strukturen erwartet werden
        void window_border(int kind,int x,int y,int w,int h,GRECT *out)
            -> Koordinaten des Randbereichs (WC_BORDER) aus der linken,
               oberen Ecke (x,y) des Fensters und der Breite/Hhe des
               Arbeitsbereiches (w,h) berechnen
        void scroll_window(WIN *win,int mode,GRECT *area)
            -> Bereich 'area' des Fensters 'win' in Abhngigkeit vom Para-
               meter 'mode' (LINE_START,LINE_END,WIN_START,WIN_END,
               WIN_SCROLL,PAGE_LEFT,PAGE_UP,PAGE_RIGHT,PAGE_DOWN,LINE_LEFT,
               LINE_UP,LINE_RIGHT,LINE_DOWN) scrollen
        void window_reinit(WIN *win,char *title,char *icon_title,
                           char *info,int home)
            -> Fenster 'win' reinitialisieren und neuzeichnen. U.a.
               wird gegebenenfalls die SCROLL-Struktur auf gltige
               Werte gesetzt und die Gre des Fensters an die maximalen
               bzw. minimalen Ausmae angepat.
            -> Parameter: (s.a. open_window())
               home:       Scroll-Position in linke obere Ecke (home!=0)
        void window_set_mouse(WIN *win,int in,int out,
                              MFORM *in_form,MFORM *out_form)
            -> Form des Mauszeigers innerhalb und auerhalb des Arbeits-
               bereiches des Fensters 'win' festlegen und setzen.
        void window_mouse(WIN *win)
            -> Mauszeiger des Fensters 'win' entsprechend den durch
               window_set_mouse() getroffenen Einstellungen setzen
        int rc_sc_save(GRECT *area,RC_RECT *rc)
            -> Bildschirmbereich 'area' in Rechteck-Struktur 'rc' sichern
               (RC_RECT-Struktur und Rckgabewerte s. Anleitung)
        int rc_sc_freshen(int sx,int sy,RC_RECT *rc)
            -> Rechteck-Struktur 'rc' erneuern, d.h. Bildschirmbereich
               an den Koordinaten (sx,sy) in Puffer kopieren (s. Anleitung)
        int rc_sc_restore(int dx,int dy,RC_RECT *rc,int mode)
            -> Rechteck-Struktur 'rc' freigeben und/oder an Position
               (dx,dy) zurckkopieren (s. Anleitung)
        int rc_sc_scroll(GRECT *in_out,int dist_x,int dist_y,GRECT *out2)
            -> Rechteck 'in_out' um Distanz (dist_x,dist_y) verschieben
               und neuzuzeichnende Rechtecke in 'in_out' und 'out2'
               zurckgeben.
            -> Rckgabewert: Anzahl der neuzuzeichnenden Rechtecke
        int scrp_path(char *path,char *file)
            -> vollstndigen Zugriffspfad der Clipboard-Datei 'file'
               (sofern file!=NULL) ermitteln (s. Anleitung)
        char LowerChar(char ch)
        char UpperChar(char ch)
            -> Zeichen 'ch' in Klein-/Grobuchstaben umwandeln, wobei
               auch Umlaute beachtet werden
        void *GetMsgBuffer(long size)
            -> globalen Speicher (u.a. fr XAcc-2/AV-Kommunikation) der
               Gre 'size' anfordern
        void drive_changed(int drive)
            -> Inhalt des Laufwerks 'drive' (0=A,1=B,2=C,...,-1=alle Lauf-
               werke) wurde verndert
               (SH_WDRAW-Nachricht wird an alle Applikationen gesendet)
        char *GetFilename(char *path)
            -> Zeiger auf Dateiname des Pfades 'path' ermitteln. Enthlt
               der Pfad keinen Dateinamen, so zeigt der Rckgabewert auf
               das Ende (Nullbyte) des Pfades
        char *GetExtension(char *path)
            -> Zeiger auf Erweiterungs des Dateinamens des Pfades 'path'
               ermitteln. Enthlt der Pfad keinen Dateinamen oder keine
               Erweiterung, so zeigt der Rckgabewert auf das Ende
               (Nullbyte) des Pfades
        char *GetPath(char *path)
            -> Dateiname des Pfades 'path' wird entfernt und ein Zeiger
               auf das Ende des Pfades (Nullbyte) zurckgegeben
        int GetDrive(char *path)
            -> Laufwerk des Pfades 'path' ermitteln (0=A,1=B,2=C,...)
        void MakeFullpath(char *dest,char *path,char *file)
            -> kompletten Pfadnamen aus Pfad 'path' (sofern path!=NULL,
               wobei der Pfad keinen abschlieenden Backslash enthalten
               mu) und Datei 'file' erstellen und im String 'dest' zurck-
               geben. Wird fr den Pfad 'path' NULL bergeben, so mu
               sich der Pfad bereits in 'dest' befinden!
        int FileSelect(char *title,char *path,char *fname,char *sel,
                       int no_insel)
            -> Dateiselector aufrufen, wobei diese Funktion automatisch
               erkennt, ob ein erweiterter Fileselector vorliegt (Para-
               meter und Rckgabewerte s. Anleitung)
        void MouseOn(void);
        void MouseOff(void);
            -> Mauszeiger an/-ausschalten. Diese Funktionen merken sich
               intern, ob der Mauszeiger bereits an- oder ausgeschaltet ist
        void MouseArrow(void);
        void MouseCursor(void);
        void MouseBee(void);
        void MouseHourGlass(void);
        void MousePointHand(void);
        void MouseFlatHand(void);
        void MouseThinCross(void);
        void MouseThickCross(void);
        void MouseOutlineCross(void);
            -> Mausform einstellen
        int sl_key(int scan,int ascii)
            -> Aus Scan-Code 'scan' und ASCII-Code 'ascii' Tastencode
               fr SLKEY-Struktur berechnen
     - neue Parameter:
        int get_dialog_info(int *,int *,int *wins,DIAINFO **)
            -> Anzahl der offenen Fenster, sofern wins!=NULL
        int xdialog(OBJECT *,char *,char *icon_title,OBJECT *icon,...)
        boolean open_dialog(OBJECT *,DIAINFO *,char *,
                            char *icon_title,OBJECT *icon,...)
        WIN *open_window(char *,char *icon_title,char *,char *info,
                         OBJECT *icon,int,int,int min_w,int min_h,
                         GRECT *max,GRECT *curr,SCROLL *scroll,
                         void (*redraw)(WIN *,GRECT *))
            -> icon_title: Fenstername im ikonifizierten Zustand oder NULL
               info:       Zeiger auf Infozeile oder NULL
               icon:       Zeiger auf Objektbaum, der fr die ikonifizierte
                           Darstellung benutzt wird, oder NULL
               min_w:      minimale Fensterbreite
               min_h:      minimale Fensterhhe
               max:        maximale Fensterausmae
               curr:       Fensterausmae
               scroll:     Zeiger auf initialisierte SCROLL-Struktur fr
                           automatisches Scrolling oder NULL
               redraw:     Routine, die den Fenster-Redraw bernimmt
                           oder NULL
        void redraw_window(WIN *win,GRECT *area)
            -> Lst einen Redraw ber das Rechteck 'area' des
               Fensters 'win' aus
        int xalert(int,int,int,BITBLK *,int modal,...)
            -> System-/Applikations-modale Alert-Box
        void dial_colors(int,int,int,int,int,int,int,int alert_icon)
            -> Farbe des Alert-Icons (0-15)
        void exit_gem(int status)
        void close_rsc(int status)
            -> beide Funktionen melden jetzt zustzlich die Menleiste ab
               und beenden das Programm mit dem Rckgabewert 'status'
    - genderte Parameter:
        boolean menu_dropped(void)
        void menu_enable(boolean enable,boolean show)
            -> Zeiger auf Menleiste mu nicht mehr bergeben werden
        void menu_enable(boolean enable);
            -> Menleiste wird jetzt immer nach der nderung neuge-
               zeichnet
        int scrp_find(char *extensions,char *);
            -> Scrap-Directory (Clipboard) nach Scrap-Datei mit einer
               der durch Komma, Punkt oder Leerzeichen getrennten
               Erweiterungen 'extensions' (z.B. "img.txt.asc.ps")
               durchsuchen
            -> Rckgabewerte s. Anleitung
    - neue globale Variablen:
        int search:           appl_search()-Funktion vorhanden
        int colors_available; Anzahl der Farbabstufungen
    - neue Fensterdialog-Elemente (mssen von der Anwendung gesetzt und
      ausgewertet werden) (Parameter 'mode' bei open_dialog() usw.):
        #define WD_HSLIDER      256  /* hor. Slider, Pfeile links/rechts */
        #define WD_VSLIDER      512  /* vert. Slider, Pfeile hoch/runter */
        #define WD_SIZER        1024 /* Sizer */
        #define WD_FULLER       2048 /* Fuller */
        #define WD_INFO         4096 /* Info-Zeile */
        /* Gre bei WM_FULLED/WM_SIZED automatisch anpassen und Nachricht
           OBJC_SIZED (s. Anleitung) versenden (ansonsten darf die Dialog-
           gre nicht gendert werden!) */
        #define WD_SET_SIZE     8182
    - Untersttzung der verschiedenen Drag&Drop-Varianten (neue Struktur
      DRAG_DROP und neue Nachricht OBJC_DRAGGED)
    - Funktion scrp_changed() (an offizielle Version des Clipboard-Proto-
      kolls angepat) verschickt jetzt zustzlich zur SC_CHANGED- eine
      AV_PATH_UPDATE-Nachricht an den AV-Server
    - scrp_clear() verschickt keine SC_CHANGED-Nachricht mehr
    - bis zu 16 Zeilen Text in Alertboxen und Text optional mit Attributen
    - DEFAULT-Button kann jetzt auch Help- oder Undo-Button sein
    - XAcc-Struktur erweitert (av_msgs,va_msgs, s. Anleitung)
    - Fenster-Struktur 'WIN' stark erweitert sowie neue Struktur 'SCROLL'
      fr automatisches Scrolling (s. Anleitung)
    - Fenstername, -info und -slider werden nach dem ICFS-Deikonifizieren
      auf ihre vorherigen Werte gesetzt
    - vollautomatische Verwaltung von Fenstern im ikonifizierten Zustand
        -> Funktion 'redraw_iconified' entfernt
    - Fenster knnen mit Ctrl-Space ikonifiziert werden, wobei durch eine
      zustzlich gedrckte Shift-Taste alle Fenster ikonifiziert werden
    - Fenster-Fuller kann durch Ctrl-'*' (Ziffernblock) angewhlt werden
    - ICFS-kompatible Ikonifizierung, falls weder ICFS noch MTOS-Iconify
      vorhanden sind (dank Dirk Haun @ WI2)
    - evtl. noch geffnete Fenster werden am Programmende geschlossen
    - Ist das oberste Fenster ein Dialog und besitzt dieser ein Eingabefeld,
      so werden per ACC_TEXT-empfangene Texte in diesem Eingabefeld ein-
      gefgt
    - TriState-Checkboxen (Checkboxen mit TOUCHEXIT-Flag)
    - beliebige GDOS-Fonts/-Gren sowie VDI-Schreibmodi bei Attribut-Text
    - nicht-proportionale GDOS-Fonts in Eingabefeldern, sofern dies vom AES
      untersttzt wird
    - alle Eingabefelder eines Dialogs durch Shift-Esc lschen
    - Enthlt die Eingabemaske eines der Zeichen ',.;:\/' und wird dieses
      Zeichen eingegeben, wenn der Cursor VOR diesem Zeichen steht, so wird
      das Eingabefeld bis zu diesem Zeichen mit Leerzeichen gefllt und der
      Cursor hinter dieses Zeichen gesetzt
    - Event-Handling (Timer,Messsages) und Echtzeitschieber "geringfgig"
      optimiert sowie Pufferung von Fensternachrichten bei geffneten
      systemmodalen Dialogen oder Popups, 4 Timer-Events (MU_TIMER1-4)
    - globale Variablen 'menu' (Menleisten mssen jetzt immer mit
      menu_install() an-/abgemeldet werden) und 'redraw' entfernt
    - beim Schlieen von Fenster wurden sich vergrernde anstatt sich ver-
      kleinernde Rechtecke gezeichnet
    - Rckgabewert von init_gem() bzw. open_rsc() war u.a. fehlerhaft,
      wenn keine Xacc/AV-Programmnamen bergeben wurden
    - bei der Terminierung des Programms (exit_gem() bzw. close_rsc())
      wird jetzt beachtet, ob das Programm als Accessory geladen wurde
      und ob vorher eine erfolgreiche Initialisierung stattgefunden hat
    - teilweise Redraw-Fehler bei Text-Eingabe in Hintergrundfenstern
    - unter MultiTasking wird jetzt beachtet, welcher Applikation die
      Menleiste gehrt, um eine unntige Prozeumschaltung zu verhindern
    - Makro-Definition der wichtigsten Scan-Codes in Header-File integriert
    - Nachricht WIN_SCROLLED wird an Applikation geschickt, wenn
      die Scrollposition eines Fensters verndert wurde
    - AP_TERM wurde im Beispielprogramm nicht korrekt ausgewertet
    - die Funktion XaccBroadCast nutzt jetzt eine evtl. vorhandene
      AES-Broadcast-Funktion (shel_write(7,...)
    - EGEM-Programme laufen jetzt immer in der MiNT-Domain (vorher nur
      bei Verwendung der MiNT-Library)
    - Anleitung korrigiert und erweitert
    - wurde bei rsrc_calc() bzw. rsrc_init() die Entwurfsfontgre angegeben,
      so hatte die Menleiste u.a. bei anderen Systemfonts als 16x8 eine
      zu kleine Hhe
    - die Pure-C-Rechteck-Assemblerroutinen funktionierten nicht bei neg.
      Koordinaten
    - kleinere Probleme mit GNU-C/Lattice-C von Markus Kilbinger beseitigt
      (u.a. Implementation der appl_search()-Funktion)
    - kleinere Fehler in den Xacc2/AV-Protokollen sowie der Ereignis-
      auswertung behoben
    - Fenster von applikationsmodalen Alertboxen werden nicht mehr beim
      AV-Server angemeldet
    - Wurde mit einem Button-Event auf das Drcken und mit dem anderen
      Button-Event auf das Loslassen einer Maustaste gewartet, so gab es
      eine Endlosschleife
    - Nachricht OBJC_CHANGED wurde bei Slidern und Radiobuttons nicht ver-
      schickt
    - Funktion 'scrp_init' entfernt (wird nur noch intern ausgefhrt)
    - Variable 'colors' enthielt Anzahl der Farbabstufungen der Farb-
      palette und nicht die Anzahl der darstellbaren Farben
    - Variablen 'max_w' sowie 'max_h' enthielten um einen Pixel zu kleine
      Bildschirmbreite/-hhe