VC控制台输出控制文本及背景颜色

VC控制台输出控制文本及背景颜色

GetStdHandle MSDN参考页
关键函数GetStdHandle SetConsoleTextAttribute

HANDLE GetStdHandle(DWORD nStdHandle);
  • nStdHandle:参数可以为STD_INPUT_HANDLESTD_OUTPUT_HANDLESTD_ERROR_HANDLE.
  • HANDLE: 就是void *,返回的是一个句柄.

SetConsoleTextAttribute MSDN参考页

BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
  • hConsoleOutput : 控制台屏幕缓冲区的句柄.
  • wAttributes : 字符属性,可以分为两类,即颜色和DBCS,以下属性在WinCon.h头文件中进行定义,对于控制文本及背景颜色,我们只关心八个与颜色相关的属性:
Attribute含义
FOREGROUND_BLUE文本颜色包含蓝色
FOREGROUND_GREEN文本颜色包含绿色
FOREGROUND_RED文本颜色包含红色
FOREGROUND_INTENSITY文本颜色增强
BACKGROUND_BLUE背景颜色包含蓝色
BACKGROUND_GREEN背景颜色包含绿色
BACKGROUND_RED背景颜色包含红色
BACKGROUND_INTENSITY背景色增强

应用程序可以将前景常量和背景常量组合起来以实现不同的颜色。 例如,以下组合实现:蓝色背景上的亮青色文本。

FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY | BACKGROUND_BLUE

以上属性均可以通过这种组合方式进行颜色的混合.

依此类推,控制台一共允许(四种属性自由组合 C 4 0 + C 4 1 + C 4 2 + C 4 3 + C 4 4 = C_4^0+C_4^1+C_4^2+C_4^3+C_4^4= C40+C41+C42+C43+C44=)16种文字颜色,以及(四种属性自由组合 C 4 0 + C 4 1 + C 4 2 + C 4 3 + C 4 4 = C_4^0+C_4^1+C_4^2+C_4^3+C_4^4= C40+C41+C42+C43+C44=)16种背景颜色,一共有16$\times$16 = 256种组合.

#include <windows.h>
#include <stdio.h>
#include <iostream>

BOOL SetConsoleColor(WORD wAttributes)
{
	HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
	if (INVALID_HANDLE_VALUE == hConsole)
	{
		return FALSE;
	}

	return SetConsoleTextAttribute(hConsole, wAttributes);
}

int main(int argc, char* argv[])
{
	printf("控制台下默认文字背景颜色:\n");
	printf("----------------------------------\n\n");

	SetConsoleColor(FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE);
	printf("控制台下红字篮底:\n");
	printf("----------------------------------\n\n");

	SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	printf("还原为控制台下默认文字背景颜色:\n");
	printf("----------------------------------\n\n");

	SetConsoleColor(FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_RED | BACKGROUND_INTENSITY);
	std::cout << "控制台下黄字紫底:" << std::endl;
	std::cout << "----------------------------------" << std::endl << std::endl;

	SetConsoleColor(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	std::cout << "还原为控制台下默认文字背景颜色:" << std::endl;
	std::cout << "----------------------------------" << std::endl << std::endl;

	system("pause");
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值