PDA

View Full Version : [C++] Un aiuto veloce


Aaly
25-04-2009, 21:10
[RIFACCIO IL POST PERCHE' MEL AVEVANO CHIUSO :mbe: ]

Colorare una parte di stringhe.
Come posso far apparire le scritte del mio programma colorate?
Intendo in una finestra cmd.

Uhm... Nella calcolatrice che ha fatto
uno, ho visto questi codici e ho provato ad usarli...


#include <windows.h>
#include <iostream.h>
#include <conio.h>

system("color 0C");
std::cout <<"ciao";

Scala colori:

0 = nero A=Verde limone
1=Blu scuro B=Azzurro
2=Verde C=Rosso
3=Verde Acqua D=Fucsia
4=Bordeaux E=Giallo
5=Viola F=Bianco
6=Verde Oliva
7=Grigio chiaro
8=Grigio
9=Blu


L'unico problema e che viene tutto di quel colore, beh, si puo impostare il colore dello sfondo col primo termine e il colore dei caratteri col secondo.
Ma se lo combi piu avanti lo imposta per tutti...
E a me serve cambiare il colore di stringhe separate.

esempio:
SYSTEM > Comando

||ElChE||88
26-04-2009, 15:17
#include <iostream>
#include "windows.h"

using namespace std;

int main()
{
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO info;

GetConsoleScreenBufferInfo(console, &info); //Salvo i valori iniziali in info

cout << "Testo non colorato " << endl;
SetConsoleTextAttribute(console, FOREGROUND_RED);
cout << "Testo rosso" << endl;
SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "Testo rosso chiaro" << endl;
SetConsoleTextAttribute(console, FOREGROUND_BLUE | BACKGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY);
cout << "Testo blu chiaro a sfondo verde chiaro " << endl;

SetConsoleTextAttribute(console, info.wAttributes); //Ritorno ai valori iniziali

return 0;
}


I valori che puoi passare alla funzione sono FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, BACKGROUND_INTENSITY.
I valori FOREGORUND_INTENSITY e BACKROUND_INTENSITY rendono il testo pił chiaro.
Per combinare i valori e creare colori diversi basta che usi l'operatore | nella chiamata a SetConsoleTextAttribute.
Per esempio se vuoi del testo viola devi usare

SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_BLUE);

per combinare rosso e blu.

Ovviamente funziona solo usando Windows.