1、api原型 SetConsoleTextAttribute
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 | 下划线 |
2、代码测试
#include <windows.h> #include <stdio.h> #include <stdlib.h> int main() { HANDLE hOut; // 获取输出流的句柄 hOut = GetStdHandle(STD_OUTPUT_HANDLE); printf("普通颜色看看 "); SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | // 前景色_绿色 FOREGROUND_INTENSITY ); // 前景色_加强 printf("设置了浅绿色. "); printf("并且完了之后就一直是浅绿色 "); SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | // 前景色_蓝色 FOREGROUND_INTENSITY | // 前景色_加强 COMMON_LVB_UNDERSCORE); // 添加下划线 printf("文字蓝色,再加个下划线. "); SetConsoleTextAttribute(hOut, FOREGROUND_RED | // 前景色_红色 FOREGROUND_INTENSITY | // 前景色_加强 BACKGROUND_BLUE ); // 背景色_蓝色 printf("设置文字红色,背景蓝色 "); SetConsoleTextAttribute(hOut, FOREGROUND_RED | // 前景色_红色 FOREGROUND_INTENSITY | // 前景色_加强 COMMON_LVB_GRID_LVERTICAL );// 网格_左_竖 printf(" 加 左 网格 "); SetConsoleTextAttribute(hOut, FOREGROUND_RED | // 前景色_红色 FOREGROUND_INTENSITY | // 前景色_加强 COMMON_LVB_GRID_RVERTICAL );// 网格_右_竖 printf(" 加 右 网格 "); SetConsoleTextAttribute(hOut, FOREGROUND_RED | // 前景色_红色 FOREGROUND_GREEN | // 前景色_绿色 FOREGROUND_BLUE ); // 前景色_蓝色 printf("改回白色 "); system("pause"); return 0; }
例如紫色可以用 蓝色+红色 配出来:
#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(" 红 + 蓝 = 紫色 ^_^ "); system("pause"); return 0; }
转载自:Lellansin's 冰森