您的位置:首页 > 编程语言 > C语言/C++

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

2017-06-26 10:22 666 查看
    使用C/C++语言编程的时候,我们对于console一般都是直接调“prinf()”函数默认输出。事实上,我们可以对它的输出格式进行精确控制。在C中,一般使用“Format Specifier”,而在C++中使用的是“ios_base”库。参考文章如下:

    https://msdn.microsoft.com/en-us/library/hh438469.aspx
    https://www.le.ac.uk/users/rjm1/cotter/page_30.htm
    除了控制输出格式,还可以控制输出字符的颜色,下面这篇文章简洁地介绍了如何控制console的字符颜色。它主要是调用SetConsoleTextAttribute函数,获取console的句柄,然后进行操作。

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下划线

代码测试

#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;
}


例如紫色可以用 蓝色+红色 配出来:
#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;
}


原文链接:https://lellansin.wordpress.com/2013/04/26/c语言-设置控制台字体颜色-setconsoletextattribute/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: