Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Durch Zuweisung Farbe für Variable festlegen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.08.2007, 20:37 Uhr
~CPP_Martin
Gast


hi,

ich will in einer Konsolenanwendung von einem leeren Feld den Hintergrund färben. Zbsp. in Grün.
Aber wie stelle ich das an?


C++:
char cl_farbe = ' ';
char az = 'A';
cout << az << cl_farbe << az; //Ausgabe A A

cl_farbe = ColorFunc(BACKGROUND_GREEN); // Farbe hinzufügen

cout << az << cl_farbe << az; // Ausgabe: A[]A ... wobei "[]" der grüne Hintergrund sein sollte



Ich hab mal vom Conio Header die funktion attribute benutzt.

C++:
void attribute( unsigned short attr )
{
   HANDLE hCon = GetStdHandle( STD_OUTPUT_HANDLE );
   if ( ! SetConsoleTextAttribute( hCon, attr ) )
   {
         // Platz für individuelle Fehlerbehandlung
   }
}


So funktioniert es auf jeden Fall:


C++:
char cl_farbe = ' ';
char az = 'A';
cout << az << cl_farbe << az; //Ausgabe A A
attribute(BACKGROUND_GREEN);
cout << az << cl_farbe << az; //Ausgabe A A



aber

1. ist die ganze Ausgabe(die untere) Grün
2. wollte ich es bei einer Zuweisung direkt färben, sodass wenn man es ausgibt, dass es immer Grün ist

Ich weiß nicht wie es geht, deswegen frag ich ja auch mal
Danke schon im Voraus.

cu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.08.2007, 20:38 Uhr
~CPP_Martin
Gast


hi

vielleicht sollte ich es verständlicher erklären


C++:
char cl_farbe = ' ';
char az = 'A';
cout << az << cl_farbe << az;
attribute(BACKGROUND_GREEN);
cout << az << cl_farbe << az;


Die erste Ausgabe ist ganz normal ohne Farbe.
Die zweite jedoch mit.
Aber ich würde es gerne so machen,dass nur cl_farbe den BACKGROUND "GREEN" bekommt.


C++:
char cl_farbe;
attribute(BACKGROUND_GREEN);
cl_farbe = ' ';
attribute(....); // Farbe wieder normal machen
cout << "Hallo Welt!" << endl;
//..



! Wichtig !
-> Es soll nur der Hintergrund von dem einem "Zeichen", also cl_farbe Grün sein und nicht das Zeichen selber(da es nur leer ist). FOREGROUND_GREEN bringt ja auch nichts.

-> Es soll nicht so sein

C++:
char cl_farbe = ' ';
attribute(BACKGROUND_GREEN);
cout << cl_farbe << endl;
attribute(....); // Farbe wieder normal machen
cout << "Hallo Welt!" << endl;



cu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.08.2007, 22:13 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hat nix mit ANSI zu tun.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.08.2007, 22:54 Uhr
RedEagle



Wenn ich dass richtig verstanden haben soll die Farbe, UND Dass Zeichen in der Variable gespeichert werden??

Ums kurz zu machen - Geht nicht!
Es ginge unter Linux mit \033[*irgendwas*; (s.FAQs) aber selbst dafür bräuchtest du eine Zeichenkette.
Unter windows wirst du vor jeder Ausgabe die Farbe per Funktionsaufruf ändern müssen.

Du kannst aber eine Funktion schreiben, die dass automatisch macht:

C++:
void RausInBunt(unsigned short Farbe, char *Zeichenkette)
{
attribute(Farbe);
std::cout << Zeichenkette << std::endl;
}


Oder, falls farbe und Zeichnkette unbedingt zusammen sein sollen (!!Nicht zu empfehlen!!):

C++:
void RausInBunt(char *Zeichenkette)
{
attribute((unsigned short) Zeichenkette[0]);
std::cout << Zeichenkette+1 << std::endl;
}

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: