c++改变控制台显示颜色

    这个问题是别人问我怎么把控制台默认黑底白字修改掉的,我说我以前做过java语言控制台颜色控制,c的没试过。后来还是留意了一下,发现可以改变控制台显示颜色。

    如下实例:

#include "pch.h"
#include 
#include 

using namespace std;

bool setConsoleColor(WORD wAttributes) {
	HANDLE wHandle = GetStdHandle(STD_OUTPUT_HANDLE);
	return SetConsoleTextAttribute(wHandle, wAttributes);
}

int main() {
	setConsoleColor(FOREGROUND_GREEN | FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	cout << "hello,world." << endl;
	setConsoleColor(FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE);
	cout << "123" << endl;
	return 0;
}

    运行效果:

    c++提供了获取窗口句柄的函数GetStdHandle(STD_OUTPUT_HANDLE),可以获取控制台输出的对象,接着可以调用SetConsoleTextAttribute()设置颜色和背景色。

    FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE这个值可以让控制台颜色回到默认设置,所以示例最后打印的"123"是白色的。

    这里FOREGROUND_属性表示前景色,肯定也有BACKGROUND_属性,表示背景色。

    FOREGROUND,BACKGROUND对应的值如下所示:

#define FOREGROUND_BLUE      0x0001 // text color contains blue.
#define FOREGROUND_GREEN     0x0002 // text color contains green.
#define FOREGROUND_RED       0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE      0x0010 // background color contains blue.
#define BACKGROUND_GREEN     0x0020 // background color contains green.
#define BACKGROUND_RED       0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.

    从上面的实例代码中可以发现,这些颜色可以组合使用。 这个WORD类型的wAttributes中的低四位表示前景色,高四位表示背景色。

你可能感兴趣的:(c++,c++,控制台颜色,Console,FOREGROUND,BACKGROUND)