Chinaunix首页 | 论坛 | 博客
  • 博客访问: 806963
  • 博文数量: 87
  • 博客积分: 2571
  • 博客等级: 少校
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-19 15:04
个人简介

重新开始,做回自我,爱拼的男人最牛!

文章分类
文章存档

2021年(2)

2020年(3)

2019年(17)

2014年(1)

2011年(1)

2010年(63)

我的朋友

分类: C/C++

2019-12-06 09:25:16

C语言不总是“黑底白字”,它也可以是彩色的,可以调用Windows.h头文件下的SetConsoleTextAttribute函数改变文字和背景颜色。


调用形式为
SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes );

hConsoleOutput表示控制台缓冲区句柄,可以通过GetStdHandle(STD_OUTPUT_HANDLE)来获得;wAttributes表示文字颜色和背景颜色。

WORD在windows.h中定义,等同于unsigned short,使用低4位表示文字(前景)颜色,高4位表示文字背景颜色,所以它的取值为xx。x为一位16进制数,即0~F都可以使用,可以随意组合。


0~F 分别代表的颜色如下:

0 = 黑色    8 = 灰色    1 = 淡蓝      9 = 蓝色
2 = 淡绿    A = 绿色    3 = 湖蓝      B = 淡浅绿  
C = 红色    4 = 淡红    5 = 紫色      D = 淡紫  
6 = 黄色    E = 淡黄    7 = 白色      F = 亮白

例如,将背景设置为淡绿色,文字设置为红色:

  1. #include
  2. #include
  3. int main(){
  4. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  5. SetConsoleTextAttribute(hConsole, 0x2C );
  6. puts("C语言中文网");
  7. return 0;
  8. }

运行结果:


如果只希望设置文字颜色,背景保持黑色,那么也可以只给出一位16进制数,例如:
SetConsoleTextAttribute(hConsole, 0xC );  //将文字颜色设置为红色
SetConsoleTextAttribute(hConsole, 0xF );  //将文字颜色设置为白色


再来看一个例子:

  1. #include
  2. #include
  3. int main(){
  4. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  5. SetConsoleTextAttribute(hConsole, 0xC );
  6. puts("红色文字");
  7. SetConsoleTextAttribute(hConsole, 0xF );
  8. puts("白色文字");
  9. SetConsoleTextAttribute(hConsole, 2 );
  10. puts("淡绿色文字");
  11. return 0;
  12. }

运行结果:

阅读(1299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~