如何设置控制台字体颜色

可以利用SetConsoleTextAttribute函数实现对控制台字体颜色、下划线等格式的设置

1. SetConsoleTextAttribute 函数原型

1 BOOL WINAPI SetConsoleTextAttribute(
2     _In_  HANDLE hConsoleOutput,  // 控制台输出流句柄
3     _In_  WORD wAttributes        // 设置属性
4     );
  • 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 下划线

2. 实例

 1 #include <Windows.h>
 2 #include <iostream>
 3 void main()
 4 {
 5     HANDLE hOut;
 6     hOut = GetStdHandle(STD_OUTPUT_HANDLE);
 7 
 8     std::cout << "普通颜色看看" << std::endl;
 9 
10     SetConsoleTextAttribute(hOut,  
11         FOREGROUND_GREEN |      // 前景色_绿色
12         FOREGROUND_INTENSITY ); // 前景色_加强
13     std::cout << "设置了浅绿色,并且完了之后就一直是浅绿色" << std::endl;
14 
15     SetConsoleTextAttribute(hOut,  
16         FOREGROUND_BLUE |       // 前景色_蓝色
17         FOREGROUND_INTENSITY |  // 前景色_加强
18         COMMON_LVB_UNDERSCORE); // 添加下划线
19     std::cout << "文字蓝色,再加个下划线" << std::endl;
20 
21     SetConsoleTextAttribute(hOut,  
22         FOREGROUND_RED |        // 前景色_红色
23         FOREGROUND_INTENSITY |  // 前景色_加强
24         BACKGROUND_BLUE );      // 背景色_蓝色
25     std::cout << "设置文字红色,背景蓝色" << std::endl;
26 
27 
28     SetConsoleTextAttribute(hOut,  
29         FOREGROUND_RED |            // 前景色_红色
30         FOREGROUND_INTENSITY |      // 前景色_加强
31         COMMON_LVB_GRID_LVERTICAL );// 网格_左_竖
32     std::cout << "加左网格" << std::endl;  
33 
34     SetConsoleTextAttribute(hOut,  
35         FOREGROUND_RED |            // 前景色_红色
36         FOREGROUND_INTENSITY |      // 前景色_加强
37         COMMON_LVB_GRID_RVERTICAL );// 网格_右_竖 
38     std::cout << "加右网格" << std::endl;    
39 
40     SetConsoleTextAttribute(hOut,  
41         FOREGROUND_RED |    // 前景色_红色
42         FOREGROUND_GREEN |  // 前景色_绿色
43         FOREGROUND_BLUE );  // 前景色_蓝色
44     std::cout << "改回白色" << std::endl;  

原文地址:http://www.lellansin.com/c%E8%AF%AD%E8%A8%80-%E8%AE%BE%E7%BD%AE%E6%8E%A7%E5%88%B6%E5%8F%B0%E5%AD%97%E4%BD%93%E9%A2%9C%E8%89%B2-setconsoletextattribute.html

原文地址:https://www.cnblogs.com/whl2012/p/4564831.html