21xrx.com
2024-11-05 17:26:15 Tuesday
登录
文章检索 我的文章 写文章
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等函数输入的文本并不会改变颜色。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复