繁体   English   中英

C ++创建更改控制台颜色功能

[英]C++ creating a change console colors function

cout << "Picks your colors..." << endl << "0 = black\t 1 = blue\t 2 = pea green\t 3 = teal\t 4 = red" << endl;
cout << "5 = purple\t 6 = green/brown\t 7 = light grey\t 8 = gark grey" << endl;
cout << "9 = lisghter brighter blue\t A = lime green\t B = light blue/aqua-ish\t C = red/orange" << endl;
cout << "D = pink/rose\t E = yellow" << endl;
char bg;
char fg;
cout << "Pick your foreground:\t";
cin >> fg;
cout << "Pick your background:\t";
cin >> bg;
string colors;
colors = "0x",bg,fg;
SetConsoleTextAttribute( hstdout, colors );

这是一项允许用户输入更改控制台颜色的功能。 我知道事实上这适用于Windows,但是我不确定它在Linux机器上会做什么。 不幸的是,我不知道如何组成字符串颜色,包括进入控制台属性函数的字符串中的字符。 使用这种方法我得到这个错误...

错误:无法将参数'2' 'std::string'转换为'WORD' '2''BOOL SetConsoleTextAttribute(void*, WORD)'

有任何想法吗? 有什么更好的方法可以改变颜色吗? 我知道Windows系统调用,但是我认为这可能在Linux上行不通。 可能我可以进行两个不同的调用,而一个可以在linux上进行,但这听起来太复杂了,我也不知道如何使程序分辨出差异。

如前所述,该函数采用WORD值。 本质上,为背景色和前景色定义了红色,绿色和蓝色值的常量,可以将它们混合在一起以创建其他颜色。 该站点的示例代码:

http://www.adrianxw.dk/SoftwareSite/Consoles/Consoles4.html

#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
  HANDLE hOut;

  hOut = GetStdHandle(STD_OUTPUT_HANDLE);

  SetConsoleTextAttribute(hOut,
                        BACKGROUND_GREEN |
                        BACKGROUND_RED |
                        FOREGROUND_GREEN | 
                        FOREGROUND_BLUE |
                        FOREGROUND_INTENSITY);
  cout << "Intense Cyan on yellow background." << endl;

  return 0;
}

该站点还列出了一些可以使用的其他组合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM