C 语言设置 Console 文字和背景的颜色的方法
2016-04-09 19:38
751 查看
最近写的一个程序需要在 Console 窗口中输出大量的信息。大量的信息混在一起看着实在是费劲。因此就想到不同的信息用不同的颜色来输出。
上网查了一番, win32 API 中有一个函数 SetConsoleTextAttribute 可以做这个事。为了用着方便,将这个函数简答的封装了一下。
下面是代码:
代码很简单,不多解释。下面是个测试用例。
输出结果如下:
![](http://img.blog.csdn.net/20160409193802713)
严格的说,我这个代码中用到了些 C++ 的特性(函数参数的默认值),用 C 编译器可能会编译不过。不过这不是什么大问题,到时候简单改改就行了。
希望这个代码对大家有用。
上网查了一番, 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 编译器可能会编译不过。不过这不是什么大问题,到时候简单改改就行了。
希望这个代码对大家有用。
相关文章推荐
- oracle 11g安装教程
- 【Java学习-J.160406.0.6】笔记5-Linux基础-linux进程管理
- hdu2030java
- 2016华为笔试题——整数之循环节点求和
- 指针与多维数组(2)
- 10个方法助你轻松完成 Linux 系统恢复
- 内嵌事件处理函数的解决办法 用户在点击某个链接时弹出一个新的窗口。
- 关于浏览器URL重写的问题(Thinkphp框架):
- HDOJ 2057 A + B Again
- js实现clone
- 黄金点游戏
- 内核线程与用户线程
- kaili aircrack-ng remark
- 浙江大学-计算机中的数学(诙谐幽默的短视频)
- net.sf.json.JSONException: 'object' is an array. Use JSONArray instead
- 结队编程之总结篇
- 机器学习(四)--- 从gbdt到xgboost
- 设计模式之工厂模式
- 如何保护我的站点免受SQL入攻击——常见网站攻击手段原理与防御
- CentOS 7.0安装Zimbra 8.6邮件服务器