C++ Mehrere Farben in der Konsole

Zeig mal den neuen Code. Trotzdem ein Beispiel (in Standard-c geschrieben, aber mit c++ kompatibel):
C:
printf("In weiss\n");
HANDLE hStdOut;
CONSOLE_SCREEN_BUFFER_INFO csbiScreen;
WORD wOldColAttr;
// HANDLE für stdout (Anm.: Error-Checking wäre hier angebracht)
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
// Alte Textfarbe abspeichern
GetConsoleScreenBufferInfo(hStdOut, &csbiScreen);
wOldColAttr = csbiScreen.wAttributes;
// Text-Farbe auf grün & "leuchtend" setzen
SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);	

printf("Nun in Hellgruen.\n");
// Alte Text-Farbe wiederherstellen
SetConsoleTextAttribute(hStdOut, wOldColAttr);
printf("Und wieder in weiss.\n");

Dies habe ich aus diesem Forum. Wer sucht, der findet. Bitte das nächste Mal berücksichtigen.
Gruss
cwriter
 
Wenn man sich SetConsoleTextAttribute in meinem Code und der Doku auch anschaut, und dazu noch Englisch kann, sollte das eigentlich kein Problem sein :rolleyes:

Wie man eine Funktion generell aufruft, ist hoffentlich klar?

Zu den Parametern:

Erster ist ein HANDLE. Name hConsoleOutput. Klingelt da was?
SetConsoleTextAttribute hat auch ein HANDLE als ersten Parameter.
Name: hConsoleOutput

Zweiter hat den Namen wAttribute.
Was ist das dann?

Dritter hat Length im Namen. Länge.
Darunter steht, das ist die Anzahl der einzufärbenden Buchstaben.

Vierter: coordinates, laut Beschreibung die Koordinaten des Ersten Buchstaben.
Dafür brauchst du eine COORD-Variable, ist ein struct mit X und Y:
C++:
COORD k;
...
k.X = 3;
k.Y = 8;
Was die Koordinaten von deinem betroffenen Text sind,
hängt davon ab, was zuerst ausgegeben wurde.
Ist es die erste Ausgabe am Bildschirm: 0|0
Ist es die dritte Zeile: 0|2
Gehts ab dem achten Buchstaben der dritten Zeile los: 7|2

Letzter Parameter ist für dich zur Überprüfung gedacht.
Ist eine Zahl, die aber nicht von dir übergeben werden muss,
sondern aus der Funktion rauskommt.
Dafür ein
C++:
DWORD xyz;
machen und
Code:
&xyz
übergeben.

Für die nächste Funktion wiederhole ich de Doku aber nur ungern.
Wenn du dich mit COORD, & oder so nicht auskennst:
Hier hab ich einen Link zu der (Online)ausgabe eines Buches zum C-Lernen.

Gruß
 
@sheel
Es funktioniert und ist erst noch einfach. Ein
C:
system("cls"); //Oder ClearConsole(), bin aber nicht sicher
am Ende, nach dem _sleep() schreiben und dasselbe mit anderen Farben - möglicherweise auch mit Schleife - ausgeben -> fertig.

Ja, das ist nicht sehr schön. Für 3 Wörter reicht diese Variante aber.

Gruss
cwriter
 

Neue Beiträge

Zurück