salve,
anche a me serve dare messaggi di diverso colore
ed ho scritto questa funzione pen non stare a fare or su or:
codice:
// questi son i colori da usare nella funzione.
// i colori con la L son luminosi, gli altri son scuri.
enum Colors {
Black, Blue, Green, Aqua, Red, Purple, Brown, LGray,
Gray, LBlue, LGreen, LAqua, LRed, LPurple, LYellow, White
};
// i colori possibili son 16
// quindi ci son 256 possibili combinazioni
// la funzione si chiama così
// color( colore_testo, colore_sfondo);
// oppure
// color ( colore_testo)
// in questo caso lo sfondo sarà nero
bool color(Colors Text, Colors Background = Black ){
HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
if(hStdOut==NULL){
cerr<<"Impossibile ottenere un handle alla console.\n";
return false;
}
SetConsoleTextAttribute(hStdOut, Text | (16*Background));
return true;
}
cmq,
la mia domanda è un altra:
se io volessi stampare una stringa colorata e poi ripristinare il precedente colore come faccio?
dovrei:
- salvarmi il colore attuale
- cambiare colore
- stampare la stringa
- ripristinare il colore precedente
oppure esiste una funzione che mi permetta di stampare un tot di caratteri con un determinato colore senza cambiare il colore per il testo successivo?
se non esistesse
son costretto a salvarmi il colore attuale,
pensavo tra le funzioni disponibili a ReadConsoleOutput o ReadConsoleOutputAttribute.
mi pare che la più appropriata sia ReadConsoleOutputAttribute
ho provato a fare:
codice:
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
WORD attributo_attuale =0;
COORD bufferCoord = {0, 0};
DWORD j=0;
ReadConsoleOutputAttribute(hConsole, &attributo_attuale, 1, bufferCoord, &j)
e funziona, in attributo_attuale mi salva l'attibuto del primo carattere della console cioè quello in posizione {0, 0}.
Il mio problema sta nel fatto che, mi servirebbe sapere quello dell'ultimo carattere stampato..
come faccio ad avere le sue coordinate?
questa è stato un tentativo,
son solo pochi giorni che lavoro con windows.h,
magari mi sto complicando la vita :master:
quindi son ben accetti consigli :P
Grazie a tutti
Saluti
Stefano