Non mi pare che ci siano margini di miglioramento... fa già il suo lavoro egregiamente.Originariamente inviato da Stefano_1986_
cavolo, mi è proprio sfuggito...
ho scritto questo:
funziona!codice:int GetCurrentColor(){ HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE); if( hStdOut==NULL ){ cerr<<"Impossibile ottenere un handle alla console.\n"; return 7; // colore standard del dos: testo grigio chiaro e sfondo nero } CONSOLE_SCREEN_BUFFER_INFO x; if( GetConsoleScreenBufferInfo(hStdOut, &x) == 0 ){ cerr<<"GetConsoleScreenBufferInfo fallita.\n"; return 7; } return x.wAttributes; }
qualche suggerimento per migliorarlo?
L'unica cosa che ti potrei suggerire è di raggruppare tutte queste funzioni in una classe che richiamerà GetStdHandle solo al momento della costruzione.
Ti basta ottenere gli attributi correnti, effettuarne l'AND con tutti gli attributi di sfondo (in modo da eliminare gli attributi del colore di primo piano), effettuarne l'OR con i nuovi attributi di primo piano e richiamare SetConsoleTextAttribute con questo nuovo valore.altra domanda:
come cambio il colore di sfondo senza cambiare il colore del carattere?