Windowsでコンソールの文字色を変える方法
大学のシステム開発の演習をどう進めていくか決めたんですけども
- OSはWindows
理由: Windowsしかないから - プログラミング言語はC
理由: 他の学生がCしか知らないから - インターフェースはCUI
理由: 時間ないから
……かなり消極的な方法で決定してしまったので、大人しくC言語の学習をすることに。
過去の完成したプログラムを見ると、単純にprintf()
で文字を出力しているだけという大変お粗末なものなので、せめて色くらいつかないものかと。
そこで、Windows上で文字色を変える方法を調べておくことにしました。
文字色を変える
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <windows.h> #include <stdout.h> int main(void) { HANDLE hStdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdoutHandle, FOREGROUND_RED); puts("TEST"); return 0; } |
これで文字の色が赤になります。
FOREGROUND_RED
を変えると赤以外の色も使えます。
青 | FOREGROUND_BLUE | 0x0001 |
緑 | FOREGROUND_GREEN | 0x0002 |
シアン | FOREGROUND_BLUE | FOREGROUND_GREEN | 0x0003 |
赤 | FOREGROUND_RED | 0x0004 |
マゼンダ | FOREGROUND_BLUE | FOREGROUND_RED | 0x0005 |
黄色 | FOREGROUND_GREEN | FOREGROUND_RED | 0x0006 |
白 | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN | 0x0007 |
強調 | FOREGROUND_INTENSITY | 0x0008 |
FOREGROUND_INTENSITY
はオンにすると文字色が強調されるフラグ。
FOREGROUND_BLUE | FOREGROUND_INTENSITY
にするとより鮮やかな青になります。
背景色を変える
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <windows.h> #include <stdout.h> int main(void) { HANDLE hStdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdoutHandle, BACKGROUND_RED); puts("TEST"); return 0; } |
これで背景の色が赤になります。
BACKGROUND_RED
を変えると赤以外の色も使えます。
青 | BACKGROUND_BLUE | 0x0010 |
緑 | BACKGROUND_GREEN | 0x0020 |
シアン | BACKGROUND_BLUE | BACKGROUND_GREEN | 0x0030 |
赤 | BACKGROUND_RED | 0x0040 |
マゼンダ | BACKGROUND_BLUE | BACKGROUND_RED | 0x0050 |
黄色 | BACKGROUND_GREEN | BACKGROUND_RED | 0x0060 |
白 | BACKGROUND_BLUE | BACKGROUND_RED | BACKGROUND_GREEN | 0x0070 |
強調 | BACKGROUND_INTENSITY | 0x0080 |
BACKGROUND_INTENSITY
はオンにすると文字色が強調されるフラグ。
BACKGROUND_BLUE | BACKGROUND_INTENSITY
にするとより鮮やかな青になります。