Hello,
Eine portable Möglichkeit sind ja immer
noch die ANSI Escape Codes. Die Verwendung veranschaulicht
folgendes Code-Beispiel (unter Linux / KDE getestet):
#include<math.h>
#include<iostream>using namespace std;
int main() {
double x, y1, y2;
char *esc = "\x1b[";cout << esc << "40m" // Hintergrund schwarz
<< esc << "91m" // Vordergrund rot, intensiv
<< esc << "2J"; // Konsole Loeschenfor(x=-7; x<=7; x+=0.5) {
y1 = floor(fabs(x)+sqrt(49-xx)+0.5);
y2 = floor(fabs(x)-sqrt(49-xx)+0.5);
// Im Folgenden jeweils:
// Cursor positionieren und ein '' ausgeben
cout << esc << (15-y1) << ";" << (2x+15) << "f*"
<< esc << (15-y2) << ";" << (2x+15) << "f";
}cout << esc << "25;1f\n";
return 0;
}
>
> Unter Linux muss man anschließend 'reset' eingeben,
> damit die Konsole wieder normal aussieht ... ;-)
Das habe ich auch schon ausprobiert.
Aber unter Windows komm in der Konsole nur
←[40m←[91m←[2J←[8;1f\*←[8;1f\*←[6;2f\*←[11;2f\*←[5;3f\*←[13;3f\*←[5;4f\*←[14;4f\*←[5;5f\*←[15;5f\*←[5;6f\*←[16;6f\*←[5;7f\*←[17;7f\*←[
5;8f\*←[18;8f\*←[6;9f\*←[18;9f\*←[6;10f\*←[19;10f\*←[6;11f\*←[20;11f\*←[7;12f\*←[20;12f\*←[7;13f\*←[21;13f\*←[8;14f\*←[21;14f\*←[8;15f
\*←[22;15f\*←[8;16f\*←[21;16f\*←[7;17f\*←[21;17f\*←[7;18f\*←[20;18f\*←[6;19f\*←[20;19f\*←[6;20f\*←[19;20f\*←[6;21f\*←[18;21f\*←[5;22f\*
←[18;22f\*←[5;23f\*←[17;23f\*←[5;24f\*←[16;24f\*←[5;25f\*←[15;25f\*←[5;26f\*←[14;26f\*←[5;27f\*←[13;27f\*←[6;28f\*←[11;28f\*←[8;29f\*←
[8;29f\*←[25;1f
Das liegt vermutlich daran, dass die ansi.sys gar nicht mehr geladen ist und das kann man auch nicht vom Nutzer verlangen, der ja "sein Windows" als das beste aller Zeiten hält und "seine Einrichtung" sowieso als das Non plus Ultra.
Es muss direkt über das Programm gehen, das den Bildschirmspeicher entsprechend bedient. Dazu hat dieser ja (im WinDOSen-Konzept) Zeichen:Farbe-Pärchen für Standard VGA und das wird auch für Windows-Konsolen beibehalten. Da landet es ja per ansi.sys auch.
Außerdem interessiert mich natürlich, wie ich erkennen kann, ob der ostream auch auf die Konsole und diese auf den Screenbuffer gerichtet ist. Das muss man ja auch irgendwie abfragen können. Denn wenn dies nicht der fall ist (Bei Umleitung auf Printer oder File z.B.), dann wäre die Farbsteuerung nicht so wirklich sinnvoll.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg

--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>