📅  最后修改于: 2023-12-03 15:14:00.454000             🧑  作者: Mango
在 C++ 控制台程序中,我们可以使用特定的代码来改变文本的颜色和背景色。这在提高程序的可读性和美观程度方面非常有帮助。
在 Unix 系统下,可以使用 ANSI 控制码来改变文本颜色。但在 Windows 系统下,只有 Windows 10 支持 ANSI 控制码。
为了适配 Windows 7/8 等系统,我们可以使用 Windows API 函数 SetConsoleTextAttribute。这个函数可以直接设置控制台文本的前景色和背景色。
#include <iostream>
#include <Windows.h>
int main()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// 设置文本为绿色背景、白色前景
SetConsoleTextAttribute(hConsole, BACKGROUND_GREEN | FOREGROUND_WHITE);
std::cout << "Hello, world!" << std::endl;
// 恢复默认颜色
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return 0;
}
在这个例子中,我们使用 GetStdHandle(STD_OUTPUT_HANDLE)
函数获取控制台句柄,然后使用 SetConsoleTextAttribute
函数设置文本颜色。最后使用 SetConsoleTextAttribute
函数恢复默认颜色。
Windows API 提供了一些颜色常量,用于方便地设置颜色。
常量 | 前景色 | 背景色 ---- | ------ | ------ FOREGROUND_BLACK | 黑色 | - FOREGROUND_BLUE | 蓝色 | - FOREGROUND_GREEN | 绿色 | - FOREGROUND_CYAN | 青色 | - FOREGROUND_RED | 红色 | - FOREGROUND_MAGENTA | 洋红 | - FOREGROUND_YELLOW | 黄色 | - FOREGROUND_WHITE | 白色 | - BACKGROUND_BLACK | - | 黑色 BACKGROUND_BLUE | - | 蓝色 BACKGROUND_GREEN | - | 绿色 BACKGROUND_CYAN | - | 青色 BACKGROUND_RED | - | 红色 BACKGROUND_MAGENTA | - | 洋红 BACKGROUND_YELLOW | - | 黄色 BACKGROUND_WHITE | - | 白色
我们也可以使用自定义的颜色,需要使用 RGB 颜色模型的值。
const int FOREGROUND_MY_COLOR = FOREGROUND_RED | FOREGROUND_GREEN;
const int BACKGROUND_MY_COLOR = BACKGROUND_RED | BACKGROUND_GREEN;
SetConsoleTextAttribute(hConsole, FOREGROUND_MY_COLOR | BACKGROUND_MY_COLOR);
在这个例子中,我们定义了自定义前景色和背景色。使用 SetConsoleTextAttribute
函数设置文本颜色。
使用控制台颜色可以让你的 C++ 控制台程序更加美观和易读。在 Windows 下,我们可以使用 SetConsoleTextAttribute
函数设置文本颜色。
参考链接: