C 语言设置 Console 文字和背景的颜色的方法

最近写的一个程序需要在 Console 窗口中输出大量的信息。大量的信息混在一起看着实在是费劲。因此就想到不同的信息用不同的颜色来输出。

上网查了一番, win32 API 中有一个函数 SetConsoleTextAttribute 可以做这个事。为了用着方便,将这个函数简答的封装了一下。

下面是代码:

#include <Windows.h>
enum ConsoleTextColor{CTC_RED = FOREGROUND_INTENSITY | FOREGROUND_RED,
                  CTC_GREEN = FOREGROUND_INTENSITY | FOREGROUND_GREEN,
                  CTC_BLUE = FOREGROUND_INTENSITY | FOREGROUND_BLUE,
                  CTC_YELLOW = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN,
                  CTC_PURPLE = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE,
                  CTC_CYAN = FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE,
                  CTC_WHITE = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
                  CTC_BLACK = 0};

enum ConsoleBackGroundColor{CBC_RED = BACKGROUND_INTENSITY | BACKGROUND_RED,
                  CBC_GREEN = BACKGROUND_INTENSITY | BACKGROUND_GREEN,
                  CBC_BLUE = BACKGROUND_INTENSITY | BACKGROUND_BLUE,
                  CBC_YELLOW = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN,
                  CBC_PURPLE = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE,
                  CBC_CYAN = BACKGROUND_INTENSITY | BACKGROUND_GREEN | BACKGROUND_BLUE,
                  CBC_WHITE = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE,
                  CBC_BLACK = 0};

void setConsoleColor(ConsoleTextColor textColor = CTC_WHITE, ConsoleBackGroundColor backgroundColor = CBC_BLACK)
{
    //STD_ERROR_HANDLE;
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(handle, textColor | backgroundColor);
}

代码很简单,不多解释。下面是个测试用例。

int main(int argc, char *argv[])
{
    setConsoleColor(CTC_RED);
    cout << "red text black background" << endl;

    setConsoleColor(CTC_GREEN);
    cout << "green text black background" << endl;

    setConsoleColor(CTC_BLUE);
    cout << "blue text black background" << endl;

    setConsoleColor(CTC_PURPLE);
    cout << "purple text black background" << endl;

    setConsoleColor(CTC_CYAN);
    cout << "cyan text black background" << endl;

    setConsoleColor(CTC_BLUE, CBC_RED);
    cout << "blue text red background" << endl;

    setConsoleColor(CTC_BLACK, CBC_WHITE);
    cout << "black text white background" << endl;

    setConsoleColor(CTC_BLACK, CBC_CYAN);
    cout << "black text cyan background" << endl;

    setConsoleColor();
    cout << "white text black background" << endl;
}

输出结果如下:
C 语言设置 Console 文字和背景的颜色的方法_第1张图片
严格的说,我这个代码中用到了些 C++ 的特性(函数参数的默认值),用 C 编译器可能会编译不过。不过这不是什么大问题,到时候简单改改就行了。

希望这个代码对大家有用。

你可能感兴趣的:(C 语言设置 Console 文字和背景的颜色的方法)