History ========================================================================== Date Beschreibung -------------------------------------------------------------------------- 30-05 Version 1.22 -------------------------------------------------------------------------- - Bugfix: SysGem f„hrt nicht mehr in den Keller, wenn die Memory-Protection aktiv ist - Neue Funktion: VOID EnableTimer ( VOID ); Schaltet die Timer ein. Wird diese Funktion nicht aufgerufen, sind __keine__ Timer m”glich!!! - Neue Funktion: VOID DisableTimer ( VOID ); Schaltet __alle__ Timer ab. -------------------------------------------------------------------------- 28-05 Version 1.21 -------------------------------------------------------------------------- - Neue Funktion: UseBlanks ( BOOL use ); Fllt einen Text, der mit SetText in ein TEXT-Feld gesetzt wird, mit Leerzeichen auf die volle L„nge auf. Bei 'use == 0' wird nicht mit Leerzeichen aufgefllt. - Neue Funktionen: INT BeginDialog ( LONG win_id, OBJECT *tree, INT ed, BYTE *title ); INT HdlDialog ( LONG win_id ); VOID FinishDialog ( LONG win_id ); Die Programmausfhrung wird gestoppt. BeginDialog liefert 1, wenn das Fenster ge”ffnet wurde, und 0, wenn kein Fenster mehr zur Verfgung steht. Allerdings sollte - bevor Sie diese Funktionen w„hlen - besser DoDialog oder WindowDialog genommen werden, da komfortabler. (jan kriesten@gi) - Neue Funktion: DispatchEvents (); Fhrt einmal HandleSysGem aus und kehrt zurck. Ist notwendig, damit bei viel Rechnerei z.b. auch auf Redraw etc. reagiert werden kann. Eventuell gesetzte Timer werden ignoriert. (jan kriesten@gi) - Nachtrag: Leider habe ich verpennt zu dokumentieren, daž die Id eines Fenster _nicht_ 0L sein darf! Sie muž also angegeben werden und fr jedes Fenster _eindeutig_ sein! (Heinz Kižler@N) - Neue Funktion: SetWatch ( RECT *r, INT enter, WPROC proc ); WatchWindow ( LONG win_id, INT enter, WPROC proc ); SetWatch definiert einen Bildschirmbereich, der berwacht werden soll. WatchWindow definiert den Bereich eines Fensters, der berwacht wird. Evtl. Verschieben der Fenster wird bercksichtigt. (maries@baub.bwk.tue.nl) - Bugfix: In ganz bestimmten Konstellationen war es m”glich, daž der Textcursor im Hintergrundfenster immer noch sichtbar war. (Heinz Kižler@N) - Bugfix: In Portab.h war BYTE als unsigned char und CICON als BYTE (benutze ich...) deklariert. (Thorsten Dietrichkeit@w) - Neue Funktion: SearchProgram ( BYTE *prg_name ); Sucht ein Programm im Speicher und liefert die AES-Id zurck, oder -1, wenn nicht gefunden. Beispiel: SearchProgram ( "GEMINI" ); - Neue Verwaltung: Jedes Fenster kann nun seinen eigenen Timer haben! Die jeweilige Handler-Funktion wird dann mit der Nachricht SG_TIMER aufgerufen. Die Zeitspanne ist mit SetWindowTimer einstellbar. (jan kriesten@gi) - Neue Funktion: SetDispatchTime ( INT ms_low, INT ms_high ); Setzt die Zeitspanne, nach der geschaut werden soll, ob fr die Fenster oder fr das System (SetProcTimer) ein Timer-Event vorliegt. Seht standardm„žig auf 50 ms. Kann aber beliebig eingestellt werden, je nachdem, ob man es braucht, oder nicht. (Thorsten Bergner@b) - In den Textfenstern k”nnen nun auch die Zeilen farbig darge- stellt werden. Dazu wird das [1]-Element des Strings benutzt. Es liegen jetzt also die Effekte auf [0], die Farbe auf [1] und der erste Buchstabe auf [2]. (balun@gold.ba-stuttgart.de) - Neue Verwaltung: Ist ein Fenster noch nicht vollst„ndig ge- zeichnet worden, oder iconifiziert, werden alle redraws via RedrawObj vollst„ndig ignoriert. - Neue Funktion: UseMTosIconify ( BOOL use ); Ist fr den Einsatz unter AES >= 4.1 gedacht und schaltet die "echte" Iconifizierung unter MTos ein. --> Da bei mir das AES 4.1 nicht zum laufen zu kriegen ist, bitte vorher testen! Ansonsten den Schalter einfach vergessen; als Voreinstellung ist die Iconifizierung via SysGem aktiv. (Dirk Hagedorn@pb) -------------------------------------------------------------------------- 21-05 Version 1.20 -------------------------------------------------------------------------- - Bugfix: Bei der Listbox werden jetzt Eintr„ge, die l„nger sind als der Ausgangstext, abgeschnitten. Ausserdem k”nnen jetzt die Listboxen nicht mehr aužerhalb des Bildschirms erscheinen. - Bugfix: PopUp's k”nnen nicht mehr aužerhalb des Bildschirms erscheinen. - Bugfix: Frames wurden unter MTOS in Monochrom nur halb ge- zeichnet (mist Farben...) - Bugfix: Unter ganz bestimmten Umst„nden 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. Standardm„žig auf RED gesetzt. - Bugfix: Unter Umst„nden "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 m”glich. 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 geh”rt. 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 ge„ndert hat, SG_SIZED wird nur noch bei einer Gr”žen„nderung 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 m”glich, 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_ ge”ffnet. - LinkTree ( ..., pos ); NOCHMAL zur Verdeutlichung: Es mssen BŽUME gelinkt werden; bei der Positionierung und Anpassung wird immer auf Element 0 zugegriffen. Teilb„ume k”nnen in die Hose gehen! - WINDOW_INFO.work_area wird von fast allen Programmen benutzt, um die Fenstergr”že zu speichern. Deshalb neu eingefhrt: draw_area. Enth„lt den Arbeitsbereich eines Fensters ohne die eventuell eingeh„ngten B„ume. Sollte anstatt work_area zum neuzeichnen benutzt werden. - Neue Funktion: SetWinMinSize ( LONG win_id, INT w, INT h ); ...setzt die Minimale Gr”že des Fensters. Hilfreich, wenn B„ume drin sind... - Neue Funktion: OpenLogWindow ™ffnet ein Fenster, in das man mit wprintf schreiben kann. Es k”nnen beliebig viele Fenster ge”ffnet 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 ge”ffnete) 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 ); L”scht 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 selbstst„ndig 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 ); "H„ngt" eine Textliste in ein Fenster ein. Die Lib passt den Dokumentbereich automatisch an und kmmert sich selbstst„ndig 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 anschliežend 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 k”nnen 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 ); H„ngt 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 Vorg„ngerversionen ist, muž ein Buttontext ber diese Funktion ge„ndert werden. - Neue Verwaltung: Bei Sliderboxen werden nun auch Nachrichten verschickt, damit evtl. Selektionen richtig bearbeitet werden k”nnen (hi Jan!). Dazu gibt es folgende Nachrichten: SG_SLID_UP SG_SLID_DN SG_SLID_MV SG_SLID_PGUP SG_SLID_PGDN 'button' enth„lt dabei die neue oberste Zeile in der Slider- box, dialog_info.special enth„lt die objektnummer der Box, damit bei mehreren Sliderboxen im Dialog unterschieden werden kann, welche gemeint ist. Nach Rckkehr dieser Nachricht werden die Eintr„ge 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, enth„lt sie nach dem Aufruf eventuell gesetzte Stati (fett etc.) - Neue Funktion: Display (...); L„dt eine Datei und stellt diese im Fenster dar. - Die Eintr„ge 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 ); L”scht 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 n„chsten 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.