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

Posted luffy5459

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++改变控制台显示颜色相关的知识,希望对你有一定的参考价值。

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

    如下实例:

#include "pch.h"
#include <iostream>
#include <Windows.h>

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++改变控制台显示颜色的主要内容,如果未能解决你的问题,请参考以下文章

QTableWidget选中Item之后,不改变文字颜色

QTableWidget选中Item之后,不改变文字颜色

QTableWidget选中Item之后,不改变文字颜色

QTableWidget选中Item之后,不改变文字颜色

QTableWidget选中Item之后,不改变文字颜色

如何改变控制台输出文本的颜色