前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SetConsoleTextAttribute函数用法

SetConsoleTextAttribute函数用法

作者头像
花狗Fdog
发布2020-10-28 09:56:54
3.4K0
发布2020-10-28 09:56:54
举报
文章被收录于专栏:花狗在Qt

1.介绍

很多时候,我们希望编写出能够拥有各种颜色的程序,能够让人眼前一亮,虽然system(color)函数可以设置颜色,但是system(color)函数设置的颜色只能有一种,这显然不是我们想要的结果,我们需要的是一个名为SetConsoleTextAttribute的函数。 SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数。参数表中使用两个属性(属性之间用,隔开),不同于system(color),SetConsoleTextAttribute()可以改变界面多种颜色,而system()只能修改为一种!。

2.头文件

<windows.h>

3.函数原型

BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);

4. 参数

HANDLE hConsoleOutput consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE) GetStdHandle(nStdHandle)是返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。

其参数nStdHandle的值为下面几种类型的一种:

含义

STD_INPUT_HANDLE

标准输入的句柄

STD_OUTPUT_HANDLE

标准输出的句柄

STD_ERROR_HANDLE

标准错误的句柄

这里我们只需要使用STD_OUTPUT_HANDLE即可,

WORD wAttributes是用来设置颜色的参数,有三种写法:

代码语言:javascript
复制
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
 //第二个参数填十六进制数字。
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
 //直接填十进制数字。
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLACK | FOREGROUND_RED);
 //BACKGROUND代表背景,FOREGROUND代表前景,

4.三种写法演示

(1)使用十六进制设置参数

代码语言:javascript
复制
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x06);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x07);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0x08);
 printf("花狗\n");

结果如下:

在这里插入图片描述
在这里插入图片描述

其他颜色数值:

在这里插入图片描述
在这里插入图片描述

(2)使用十进制设置参数

代码语言:javascript
复制
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 10);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
 printf("花狗\n");

结果如下:

在这里插入图片描述
在这里插入图片描述

其他颜色数据:

在这里插入图片描述
在这里插入图片描述

(3)使用函数已定义好的参数

代码语言:javascript
复制
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_RED);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_GREEN | FOREGROUND_BLUE);
 printf("花狗\n");
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_RED | BACKGROUND_GREEN); 
 printf("花狗\n");

结果如下:

在这里插入图片描述
在这里插入图片描述

其他颜色数值:

属性

含义

FOREGROUND_BLUE

文字颜色包含蓝色

FOREGROUND_GREEN

文字颜色包含绿色

FOREGROUND_RED

文字颜色包含红色

FOREGROUND_INTENSITY

文字颜色加强

BACKGROUND_BLUE

背景颜色包含蓝色

BACKGROUND_GREEN

背景颜色包含绿色

BACKGROUND_RED

背景颜色包含红色

BACKGROUND_INTENSITY

背景颜色加剧

COMMON_LVB_LEADING_BYTE

前导字节

COMMON_LVB_TRAILING_BYTE

尾随字节

COMMON_LVB_GRID_HORIZONTAL

顶部水平

COMMON_LVB_GRID_LVERTICAL

左垂直

COMMON_LVB_GRID_RVERTICAL

正确的垂直

COMMON_LVB_REVERSE_VIDEO

反转前景和背景属性

COMMON_LVB_UNDERSCORE

下划线

好了,其他数值各位有兴趣的自行研究。

如有错误,欢迎指出批评,欢迎讨论。 每文一句:没有理想,就达不到目的;没有勇敢,就得不到东西。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.介绍
  • 2.头文件
  • 3.函数原型
  • 4. 参数
  • 4.三种写法演示
    • (1)使用十六进制设置参数
      • 其他颜色数值:
    • (2)使用十进制设置参数
      • 其他颜色数据:
    • (3)使用函数已定义好的参数
      • 其他颜色数值:
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档