Hintergrundfarbe/Textfarbe mehrmals ändern

natsu1000

Grünschnabel
Hi, habe ein großes Problem. Arbeite mit Visual Studio und wollte die Hintergrundfarbe und Textfarbe ändern. Normalerweise habe ich das immer mit 'system("color xx")' gemacht. Will man allerdings die Textfarbe mehrmals ändern, funktioniert das leider nicht. Auch wenn ich dann die Textfarbe manuell umstelle

#include "windows.h"
#include "conio.h"
#include "iostream"

using namespace std;

#define schwarz 0
#define weis 15
#define rot 2

void textfarbe(WORD color)
{
SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE),color);
}

int _tmain(int argc, _TCHAR argv[ ])
{
textfarbe(schwarz);
cout<<"HALLO"<<endl;
textfarbe(weis);
cout<<"TEST"<<endl;

}



wird zwar die Textfarbe geändert, aber nicht die Hintergrundfarbe. und wenn man vorher mit system die Farbe geändert hat, dann wird überall wo text steht, die Hintergrundfarbe automatisch wieder auf schwarz gestellt.
Keine Ahnung warum:confused:
Kann mir jemand helfen
 
SetConsoleTextAttribute gibt nicht nur die Textfarbe alleine an, sondern das Byte enthält auch die Hintergrundfarbe. Diese befindet sich dann in den oberen 4 Bit des Bytes. Da du da nichts drin hast, wird 0, also Schwarz gesetzt.

Du kannst das so zusammensetzen:

Code:
void textfarbe( WORD wTextFarbe, WORD wHintergrundFarbe )
{
  SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), wTextFarbe | ( wHintergrundFarbe << 4 ) );
}
 
Zurück