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++ 的特性(函数参数的默认值),用 C 编译器可能会编译不过。不过这不是什么大问题,到时候简单改改就行了。

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
此“CGI”并非指“公共网关接口”(Common Gateway Interface),也与相关的技术无关。此处的CGI(Console Graphic Interface),即“控制台图形界面”,是自定义的一套控制台应用程序“图形化”界面开发解决方案。由于控制台本身并不能呈现真正的图像,此处所谓“图形界面”,实际上是由各种制表符、图形字符构成的字符阵列(以下简称“CGI图像”)。这样模拟图形界面的方式,在一定程度上改善了控制台应用程序的人机交互体验。 此开发工具包提供了一个绘制CGI图像的工具软件“CGI Maker 2.0”,同样运行于控制台下(该软件本身的界面就是基于CGI系统建立起来的),可以方便用户“绘制”CGI界面“图像”。 随包还提供了一个用于支持CGI开发的静态链接库文件,控制台应用程序开发人员可以借助这个静态库及使用“CGI Maker 2.0”生成的“.cgi”文件在自己的程序中方便地构建起CGI“图形”界面来;同时通过该静态库提供的API,您还可以自由控制控制台窗口的输出及其他属性。 随包还提供了借助该静态库开发的两个小程序(NeonLight和Rainbow),用于展示该系统可以带来的控制台显示效果。 包内含使用说明书。 本系统基于C语言开发,欢迎C语言初学者试用本系统并通过它建立自己的美观的控制台应用程序。 (注:该系统只能应用于Microsoft Windows环境下。)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值