Konsolenanwendung und Farbe

Status
Nicht offen für weitere Antworten.

foxxx

Mitglied
Hallo,

lässt sich in einer Konsolenanwendung Farbe für die dargestellten Texte
festlegen?

Gibt es sonst noch irgendwelche Möglichkeiten die Darstellung (Farbe,
Schriftart, ...) in Konsolenanwendungen zu verändern?

Vielen Dank für eure Hilfe!

Viele Grüße

Michael
 
moin


:rolleyes:
Code:
#include <iostream>
#include <windows.h>

using namesapce std;

int main()
{
	HANDLE hStdOut;
		
	hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
		
	SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);

	cout << "Es ist blau" << std::endl;
	
	return 0;
}
Schriftart kann man nicht ändern.


mfg
umbrasaxum
 
Hallo Umbrasaxum,

vielen Dank für deine schnelle Hilfe!

hätt da aber noch zwei Fragen:

[1] Hast du eine Liste für die zulässigen Farbkonstanten? Denn "FOREGROUND_WHITE" ist z.B. nicht zulässig. Oder gibt es vielleicht eine Möglichkeit die Farben RGB über Hexadezimalwerte einzugeben?

[2] Könntest du mir Newbie vielleicht kurz ausdeutschen was die Zeilen:

> HANDLE hStdOut;
> hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
> return 0;

bedeuten? Ich muß den Quellcode nämlich dokumentieren und würd daneben gern was schreiben. Ohne das "return 0;" gehts auch hab ich rausgefunden, ist nicht unbedingt notwendig.

Hoffe du kannst mir da noch schnell auf die Sprünge helfen.

Vielen Dank!

MfG
 
moin


Code:
Attribute Meaning 
FOREGROUND_BLUE Text color contains blue. 
FOREGROUND_GREEN Text color contains green. 
FOREGROUND_RED Text color contains red. 
FOREGROUND_INTENSITY Text color is intensified. 
BACKGROUND_BLUE Background color contains blue. 
BACKGROUND_GREEN Background color contains green. 
BACKGROUND_RED Background color contains red. 
BACKGROUND_INTENSITY Background color is intensified. 
COMMON_LVB_LEADING_BYTE Leading byte. 
COMMON_LVB_TRAILING_BYTE Trailing byte. 
COMMON_LVB_GRID_HORIZONTAL Top horizontal. 
COMMON_LVB_GRID_LVERTICAL Left vertical. 
COMMON_LVB_GRID_RVERTICAL Right vertical. 
COMMON_LVB_REVERSE_VIDEO Reverse foreground and background attributes. 
COMMON_LVB_UNDERSCORE Underscore.

HANDLE hStdOut
es wird eine instanz der HANDLE Klasse erzeugt.

hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
du holst dir ein Handle des Stadart-Out.

return 0;
Du kennst return 0 nicht?! Du hast noch viel zu lernen.


mfg
umbrasaxum
 
Hallo,

ich hatte meine erste Einheit c++ am Freitag :rolleyes:

Auf jeden Fall scheint es auch ohne dieses return 0 zu gehn.

VIelen Dank nochmal für deine Hilfe! Und so schnell ;-)

MfG
 
Okay Okay :rolleyes:

Dann schreib ichs halt wieder hin..

Du sag mal... wenn ich die Textfarbe von dem standart-weiß auf blau verändert hab, krieg ich sie dann auch wieder zurück in das standart-weiß? Denn bei den Konstanten ist das nicht dabei.
 
moin


Benutz einfach die Suchfunktion sowas wurde hier schon oft besprochen:
Code:
#include <iostream>

#include <windows.h>

int main()
{
	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 blau & "leuchtend" setzen
	SetConsoleTextAttribute(hStdOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY);

	// Hier kann nun per WinAPI (WriteFile(), ReadFile(), WriteConsole(), ReadConsole())
	// oder per "Standard"-Methoden gearbeitet werden.
	std::cout << "Es ist blau" << std::endl;

	// Alte Text-Farbe wiederherstellen
	SetConsoleTextAttribute(hStdOut, wOldColAttr);

	return 0;
}


mfg
umbrasaxum
 
umbrasaxum hat gesagt.:
moin


return 0 ist Pflicht!


mfg
umbrasaxum


Ganz locker und geschmeidig bleiben, umbrasaxum ;)
Im überigen gehts unter Windows auch ohne das return 0; und man kann auch statt int main() void main() schreiben, klappt auch, weil windows das nicht so eng sieht...Nur unter Linux geht das nicht, weil der einen Programmstatus braucht...


Gruss

MFC OpenGL
 
Status
Nicht offen für weitere Antworten.
Zurück