C语言 设置控制台字体颜色 SetConsoleTextAttribute

本文介绍如何使用SetConsoleTextAttribute函数在Windows控制台应用程序中设置文本颜色和样式,包括前景色、背景色及其强度,并提供了代码示例。

1
2
3
4
BOOL WINAPI SetConsoleTextAttribute(
   _In_  HANDLE hConsoleOutput,  // 控制台输出流句柄
   _In_  WORD wAttributes        // 设置属性
);

hConsoleOutput [输入参数]

控制台屏幕的输出流的句柄(handle to console screen buffer)。这个文件流的句柄必须有写入(GENERIC_READ)的权限。更多的信息,请查看MSDN上的Console Buffer Security and Access Rights

wAttributes [输入参数]

具体常见设置属性如下:

属性意义
FOREGROUND_BLUE前景色包含 蓝色
FOREGROUND_GREEN前景色包含 绿色
FOREGROUND_RED前景色包含 红色
FOREGROUND_INTENSITY前景色加强
BACKGROUND_BLUE背景色包含 蓝色
BACKGROUND_GREEN背景色包含 绿色
BACKGROUND_RED背景色包含 红色
BACKGROUND_INTENSITY背景色加强
COMMON_LVB_GRID_HORIZONTAL顶部水平网格
COMMON_LVB_GRID_LVERTICAL左竖直网格
COMMON_LVB_GRID_RVERTICAL右竖直网格
COMMON_LVB_UNDERSCORE下划线

代码测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <windows.h> 
#include <stdio.h>
#include <stdlib.h>
   
int main() 
     HANDLE hOut; 
 
     //  获取输出流的句柄
     hOut = GetStdHandle(STD_OUTPUT_HANDLE);   
 
     printf ( "普通颜色看看\n" );
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_GREEN |      // 前景色_绿色
                             FOREGROUND_INTENSITY ); // 前景色_加强
     printf ( "设置了浅绿色.\n" ); 
     printf ( "并且完了之后就一直是浅绿色\n" );
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_BLUE |       // 前景色_蓝色
                             FOREGROUND_INTENSITY |  // 前景色_加强
                             COMMON_LVB_UNDERSCORE); // 添加下划线
     printf ( "文字蓝色,再加个下划线.\n" );   
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_RED |        // 前景色_红色
                             FOREGROUND_INTENSITY |  // 前景色_加强
                             BACKGROUND_BLUE );      // 背景色_蓝色
     printf ( "设置文字红色,背景蓝色\n" ); 
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_RED |            // 前景色_红色
                             FOREGROUND_INTENSITY |      // 前景色_加强
                             COMMON_LVB_GRID_LVERTICAL ); // 网格_左_竖
     printf ( "                      加 左 网格\n" ); 
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_RED |            // 前景色_红色
                             FOREGROUND_INTENSITY |      // 前景色_加强
                             COMMON_LVB_GRID_RVERTICAL ); // 网格_右_竖 
     printf ( "                      加 右 网格\n" );   
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_RED |    // 前景色_红色
                             FOREGROUND_GREEN |  // 前景色_绿色
                             FOREGROUND_BLUE );  // 前景色_蓝色
     printf ( "改回白色\n" ); 
 
     system ( "pause" );
     return 0; 
}

具体配色,请参见下图:

例如紫色可以用 蓝色+红色 配出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <windows.h> 
#include <stdio.h>    // for printf
#include <stdlib.h>   // for system
   
int main() 
     HANDLE hOut; 
 
     //  获取输出流的句柄
     hOut = GetStdHandle(STD_OUTPUT_HANDLE);   
 
     SetConsoleTextAttribute(hOut, 
                             FOREGROUND_RED |  // 前景色_红色
                             FOREGROUND_BLUE | // 前景色_蓝色
                             FOREGROUND_INTENSITY); // 加强
     printf ( " 红 + 蓝 = 紫色 ^_^\n" ); 
 
     system ( "pause" );
     return 0; 

再要配其他颜色的话,就要去查一些配色表了

This entry was posted in C/C++, Windows and tagged windows api, windows 编程 by lellansin. Bookmark the permalink.

One thought on “C语言 设置控制台字体颜色 SetConsoleTextAttribute”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值