Computer & Technik
Clipper
Fenster ausschmücken
Nun ist es mit dem Setzen von Fenstern nicht getan. Es soll auch etwas in ihnen ausgegeben werden. Dazu bietet die Clipper-Library drei Funktionen an:
void _COUT(char *, int); /* Consolen-Output */
void _SOUT(char *, int); /* Stringausgabe auf Console */
void _POUT(char *, int); /* Printer-Output */
_COUT() und _SOUT() sprechen jeweils den Bildschirm und _POUT() den Drucker an. Der einzige Unterschied zwischen _COUT() und _SOUT() besteht darin, daß _COUT() alle in der Zeichenkette enthaltenen Steuerzeichen wie CR, LF oder BS mit anzeigt, während _SOUT() diese als Steuerzeichen interpretiert.
Alle Ausgaben erfolgen an der aktuellen Cursor-Position, die mit der Funktion _SETCURS() verändert werden kann.
void _SETCURS(int, int); /* Cursor auf: Zeile, Spalte */
int _GETCURS(void); /* Cursor == Zeile*256 + Spalte */
Die Rückgabe der aktuellen Cursorposition erfolgt gepackt. Die aktuelle Zeile steht im HiByte, während die Spalte im LoByte zu finden ist.
Aber auch die Cursorform kann unter Clipper verändert werden. Die Informationen für die Cursor-Charakteristik ist wiederum verschlüsselt. Im HiByte steht die obere Grenze des Cursors, im LoByte die untere. Beide Werte werden von oben berechnet, d.h. die höchste Cursor-Scanzeile hat den Wert 0, die unterste in Abhängigkeit von der Grafikkarte entweder 7 (CGA) oder 14 (EGA).
void _SETCTYP(int); /* Cursor-Charakteristik setzen */
int _GETCTYP(void); /* Cursor-Charakteristik lesen */
Die Verwendung der Farben unter Clipper wird mittels des Befehls SET COLOR TO geregelt. Wie bekannt, werden von Clipper Farben einzelnen Funktionen bzw. Stati zugeordnet:
1. Standardfarbe
2. Farbe für Hervorhebung
3. Farbe für nicht gewählt
4. Rahmenfarbe
5. Hintergrundfarbe
Die Reihenfolge der Aufzählung ist hier etwas anders als beim Befehl SET COLOR TO, da hier gleich die Parameter-Reihenfolge der Funktion _SETATTR() verwendet werden soll. Diese Funktion übernimmt insgesamt 8 Integerwerte, wobei die Farben 1-3 jeweils mit Vorder- und Hintergrund angegeben werden. Die Funktionsdeklaration lautet korrekt:
void _SETATTR(int, int, int, int, int, int, int, int);
Daneben gibt es drei Spezialfunktionen:
void _SETSTD(void); /* setzt die Standardfarbe */
void _SETENH(void); /* setzt die Farbe für Hervorhebung */
void _SETUNS(void); /* setzt die Farbe für nicht gewählt */
Mit diesen Funktionen kann die jeweils definierte Farbe als die aktuelle Farbe gesetzt werden.
Intern verwaltet Clipper die Farben in den Variablen
int _SBACK; /* Standardfarbe: Hintergrund */
int _SFORE; /* Vordergrund */
int _EBACK; /* Hervorhebung : Hintergrund */
int _EFORE; /* Vordergrund */
int _XBACK; /* nicht gewählt: Hintergrund */
int _XFORE; /* Vordergrund */