Cambiar el color del texto de la consola

No es muy común en Windows pero quizás alguna vez quieras cambiar el color del texto/fondo de la consola, por ejemplo, que los mensajes de error salgan de color rojo.

Creo que con el ejemplo es mas que suficiente para saber y entender como hacerlo.

De todas formas, por si alguien anda un poco despistado pongo todos los posibles valores del segundo parámetro de la función que se encarga de cambiar el color. Y acuérdate que para poner varios hay que usar el operador binario OR | .

FOREGROUND_INTENSITY
FOREGROUND_RED
FOREGROUND_GREEN
FOREGROUND_BLUE 
BACKGROUND_INTENSITY
BACKGROUND_RED
BACKGROUND_GREEN
BACKGROUND_BLUE

#include <windows.h>

HANDLE hstdout;

void write(const char* message)
{
    DWORD t;
    WriteConsole(hstdout, (const void*)message, lstrlen(message), &t,NULL);
}

int main()
{
    hstdout = GetStdHandle(STD_OUTPUT_HANDLE);

    write("\n\n");
    SetConsoleTextAttribute(hstdout, FOREGROUND_INTENSITY | FOREGROUND_RED | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE );
    for (int i = 0; i< 40; i++) write(" ");
    write("\n          davidxl.blogspot.com          \n");
    for (int i = 0; i< 40; i++) write(" ");
    SetConsoleTextAttribute(hstdout,FOREGROUND_INTENSITY);
    write("\n\n");


    for (int i = 0; i<256; i++)
    {
        SetConsoleTextAttribute(hstdout,i);
        write("?");
    }

    SetConsoleTextAttribute(hstdout,FOREGROUND_INTENSITY);
    return 0;
}

Comentarios