21xrx.com
2025-03-27 16:32:09 Thursday
文章检索 我的文章 写文章
C++ 如何更换颜色?
2023-07-01 07:41:20 深夜i     --     --
C++ 颜色 更换

在C++中,可以使用Windows API中的SetConsoleTextAttribute函数来更改命令行窗口中文本的颜色。

该函数的原型如下:

BOOL SetConsoleTextAttribute(
 HANDLE hConsoleOutput,
 WORD  wAttributes
);

其中,hConsoleOutput是命令行窗口的句柄,可以通过GetStdHandle函数获取。wAttributes是控制台属性,可以设置文本颜色、背景颜色、字体样式等。其具体取值如下:

控制台属性 | 取值

--- | ---

文本颜色 | FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY

背景颜色 | BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, BACKGROUND_INTENSITY

注:FOREGROUND表示前景色,即文本颜色;BACKGROUND表示背景色。

例如,以下代码可将字体颜色设为绿色:

#include <Windows.h>
int main() {
  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // 获取命令行窗口句柄
  SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN); // 设置文本颜色为绿色
  printf("Hello, world!\n"); // 输出绿色文本
  return 0;
}

除了用单个属性值来设置文本颜色,还可以用位运算将不同的属性值合并,从而设置多种文本颜色和背景颜色。例如:

#include <Windows.h>
int main() {
  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // 获取命令行窗口句柄
  SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE); // 设置文本颜色为红色加粗、背景色为蓝色
  printf("Hello, world!\n"); // 输出红色加粗文本,蓝色背景
  return 0;
}

值得注意的是,使用SetConsoleTextAttribute函数设置文本颜色时,只有在命令行窗口中输出的文本才会受到影响,cin等函数输入的文本并不会改变颜色。

  
  

评论区