UFSL Universal Fontselector (c) 1991-1993 by Michael Th„nitz UFSL ist Freeware. Wo liegt eigentlich das Problem? Nun ganz einfach, die Einstellung eines anderen als des Systemfonts ist eigentlich recht trivial. vst_font() stellt den Font ein, vst_point() stellt die Gr”áe ein. Woher weiá man aber nun welche Fonts es gibt und in welchen Gr”áen sie vorliegen? Auch das ist recht einfach. Man l„dt die Fonts, klappert alle Fonts nach Ihren "echten" Gr”áen ab und stellt alles in einer Listbox dar. Tja, und da liegt das Problem. Ist die Abfage der Gr”áen schon ein klein wenig kompliziert, schmeiáen bei Listbox die meisten Gelegenheits- programmierer das Handtuch. Entsprechend bescheiden sind dann auch die Ergebnisse. Hier springt UFSL nun ein und bietet den gleichen einfach zu programmierenden Komfort wie bei der Fileselectbox. Einfach die Fontauswahlbox mit einigen einfach zu erfahrenen Parametern versorgen, ber den Cookie aufrufen und man erh„lt FontId und die Punktgr”áe zurck. Ein entsprechendes Beispiel liegt mit FONTTEST.C vor. Der Programmierer entscheidet, ob es sich um einen konventionellen Dialog mit Let 'em Fly Untersttzung oder um einen Fensterdialog handelt. UFSL ist eine Fontauswahlbox fr den Autoordner. Sie bietet dem Programmierer eine einfache Programmierschnittstelle ber einen Cookie. Der Cookie lautet: 'UFSL'. Der Cookie liefert einen Zeiger auf folgende Struktur: typedef struct { unsigned long id; /* UFSL ID (UFSL) */ unsigned int version; /* version (BCD-Format) */ int dialtyp; /* 0=Dialog, 1=Fenster */ int cdecl (*font_selinit)(void); int cdecl (*font_selinput)( int vdihandle, /* Handle fr die VWorkstation */ int n_fonts, /* Gesamtzahl der geladenen Fonts */ int ftype, /* 1=nur monospaced Fonts, 0=alles */ char *text, /* eigener Text, max. 34 Zeichen */ /* falls nicht erforderlich, NULLpointer bergeben */ int *fretid, /* eingestellte FontId */ int *fretsize /* eingestellte Fontgr”že */ ); OBJECT *helpbutton; /* Typ: BOXTEXT */ int cdecl (*helpfunc)(void); /* Benutzerdefinierte Helpfkt. */ /**** ab Version 0.91 ********************************************/ char *examplestr; /* Beispieltext fr Fontdarstellung */ } UFSL; Das Beispiel zeigt die M”glichkeiten. Die Funktion font_selinit() muá nur dann aufgerufen werden, wenn man einem benutzerdefinierten Button einrichten will. Ansonsten kann man font_selinput() auch direkt aufrufen. UFSL nutzt die M”glichkeiten von "Let 'em Fly" laut Doku Version 1.17. Version: 0.90 vom Mai 1993 (Dezember 1991) Ich m”chte noch anmerken, das die Cookieinstallation noch recht drftig ist. Es wird einfach installiert, ohne zu fragen ob Platz ist. Das Profibuch bietet hierzu eine m.E. fehlerhafte Beschreibung. Es wird von einen Nullcookie und seines Wertes gesprochen. Das ist m.E. ein Syntaxerror. Wer also vernnftige Cookieroutinen in 'C' hat, m”chte mir doch bitte weiterhelfen. Dem Fensterdialog muá noch seine Unmodalit„t abgew”hnt werden. Version: 0.91 vom Mai 1993 Die Cookiefrage ist gekl„rt durch Assemblerroutinen von Arnd Beissner, zur Verfgung gestellt durch Ralf Zimmermann @WI2. Alle Benutzerdefinierten Variablen werden beim Verlassen zurckgesetzt. Einstellung der Fontgr”áe ber Editfeld durch Doppelklick auf Beispielbox oder Editfeld. Beispieltextstring ber Zeiger zug„nglich. MfG Michael Th„nitz Email: MICHAEL THAENITZ @BI im Mausnetz