您的位置:首页 > 其它

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

2016-04-09 19:38 751 查看
最近写的一个程序需要在 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++ 的特性(函数参数的默认值),用 C 编译器可能会编译不过。不过这不是什么大问题,到时候简单改改就行了。

希望这个代码对大家有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: