i++

プログラム系のメモ書きなど

C/C++ : printf / std::cout のコンソール出力のテキストに色をつける(Windows)

Windowsここで紹介されているようなエスケープコードが効かないので、Windows.h の SetConsoleTextAttribute 関数を使います。

もろもろのメモ。

  • FOREGROUND_INTENSITY を付けると色が明るめになる
  • 下の例でいうところの Gray が普段のコンソールのテキスト色の状態
  • FOREGROUND_XXX ではなく BACKGROUND_XXX を使えば背景色を変えられる
  • プログラム終了後も同じコンソールでは色の変更が継続するので、元に戻す必要がある
void SetConsoleTextGray()
{
    HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( handle, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN );
}

void SetConsoleTextRed()
{
    HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_RED );
}

void SetConsoleTextGreen()
{
    HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN );
}

void SetConsoleTextWhite()
{
    HANDLE handle = GetStdHandle( STD_OUTPUT_HANDLE );
    SetConsoleTextAttribute( handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN );
}