Ich muss ein CLI ähnlich dem CMD des Fensters machen. Um den Farbbefehl auszuführen, verwende ich die Funktionen rlutil::setColor
und rlutil::setBackgroundColor
in rlutil.h. Aber, um die Farben in der ganzen Konsole zu ändern, muss ich den Bildschirm löschen (rlutil::cls()
), oder nur die neuen Ausgaben werden mit diesen Änderungen wie in den Bildern erscheinen.Ändern Sie die Konsolenfarben und behalten Sie die Ausgabe in C++
Ohne die cls:
Im cmd (verwenden ich aus @echo nicht dem aktuellen Verzeichnis angezeigt):
Dies ist die Funktion, die ich gemacht habe:
void colors(string value) {//I recive the user's input (like in the cmd)
char foo[3];//I save each character in this array
int c_text = 0, c_bg = 0;//Variables to get the numeric value of each character
if(value.length() == 2) {//This is to only accept 2 characters as parameter for the command
strcpy(foo, value.c_str());//Copy the values of the string in the array
c_bg= chartoHEX(foo[0]);//Take the int value of each character
//(if the parameter in chartoHEX is '0', returns 0, if it's 'A', returns 10, and so on)
c_text = chartoHEX(foo[1]);
//If the function returns -1 means that the parameter wasn't an HEX number
if(c_text != -1 && c_bg != -1) {
rlutil::setColor(c_text);//Changes the text color
rlutil::setBackgroundColor(c_bg);//Changes the background color
}
}
}
Wenn ich die Funktion aufrufen:
colors("0a");
rlutil::cls();
cout << "C:\\Users\\Raven>";
Wie kann ich die Ausgabe halten, nachdem die Farben zu ändern?
Das hat nicht funktioniert, aber das hat mir geholfen, die Lösung zu finden, anstatt 'WriteConsoleOutputAttribute' zu verwenden, benutzte ich' FillConsoleOutputAttribute'. Danke trotzdem. –
@ RavenH.- Wie wäre es, die Lösung hier zu enthüllen? – lit
FillConsoleOutputAttribute füllt jede Zelle mit derselben Farbe, WriteConsoleOutputAttribute gibt die Farben pro Zelle in einem Array an. Wählen Sie einfach die Funktion, die Ihren Bedürfnissen am besten entspricht. – Anders