控制台界面控制(五):文字颜色
2016-01-07 19:34
295 查看
本文为转载文档,原文档链接:http://blog.csdn.net/bnb45/article/details/7994025
设置字符属性
VC控制台提供了一个设置文本属性的函数,它的作用包括设置文本颜色,设置文本背景颜色,以及下划线等。
[cpp] view
plaincopy
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // 句柄
WORD wAttributes // 文本属性
);
文本属性包含以下内容:
[cpp] view
plaincopy
FOREGROUND_BLUE // 文本颜色包含蓝色
FOREGROUND_GREEN // 文本颜色包含绿色
FOREGROUND_RED // 文本颜色包含红色
FOREGROUND_INTENSITY // 文本颜色加亮
BACKGROUND_BLUE // 背景含蓝色
BACKGROUND_GREEN // 背景含绿色
BACKGROUND_RED // 背景含红色
BACKGROUND_INTENSITY // 背景加亮
COMMON_LVB_LEADING_BYTE // 首字节
COMMON_LVB_TRAILING_BYTE // 末字节
COMMON_LVB_GRID_HORIZONTAL // 首行
COMMON_LVB_GRID_LVERTICAL // 左列
COMMON_LVB_GRID_RVERTICAL // 右列
COMMON_LVB_REVERSE_VIDEO // 翻转前景及背景属性
COMMON_LVB_UNDERSCORE // 下划线
设置文本颜色及设置文本背景颜色
就目前看来,我只需要两个功能就可以了。一个是对输出文本的颜色控制,另一个是文本的背景颜色。通过一些方法把它们从原先的函数中分离开来。
[cpp] view
plaincopy
// ---- 在头文件中枚举基本颜色常数,使用它们来设置颜色
enum TEXT_COLOR{
BLACK = 0,
RED = 1,
BLUE = 2,
GREEN = 4,
};
[cpp] view
plaincopy
public:
// ---- 设置文本(背景)颜色
// @param int [in] 颜色属性,TEXT_COLOR常量组合使用时会转化为int
// @param bool = flase [in] 颜色是否加亮
void SetTextColor(int color, bool bIntensity=false);
void SetTextBackgroundColor(int color, bool bIntencity=false);
private:
// -- 头文件中声明两个成员变量,用来存放当前文本的颜色信息
// -- 避免设置文本颜色的时候无法设置背景颜色的情况
WORD wTextColor;
WORD wTextBackgroundColor;
代码实现
[cpp] view
plaincopy
// ---- 设置输出的文本颜色
void CMyConsole::SetTextColor(int color, bool bIntensity)
{
wTextColor = 0;
if (color & RED)
{
wTextColor |= FOREGROUND_RED;
}
if (color & BLUE)
{
wTextColor |= FOREGROUND_BLUE;
}
if (color & GREEN)
{
wTextColor |= FOREGROUND_GREEN;
}
if (bIntensity)
{
wTextColor |= FOREGROUND_INTENSITY;
}
// -- 设置 WriteConsole 等函数的字符属性
// @param HANDLE [in] 控制台句柄
// @param WORD [in] 文本属性
// #return bool
SetConsoleTextAttribute(hOut, wTextColor | wTextBackgroundColor);
};
// ---- 设置输出文本的背景颜色
void CMyConsole::SetTextBackgroundColor(int color, bool bIntensity)
{
wTextBackgroundColor = 0;
if (color & RED)
{
wTextBackgroundColor |= BACKGROUND_RED;
}
if (color & BLUE)
{
wTextBackgroundColor |= BACKGROUND_BLUE;
}
if (color & GREEN)
{
wTextBackgroundColor |= BACKGROUND_GREEN;
}
if (bIntensity)
{
wTextBackgroundColor |= BACKGROUND_INTENSITY;
}
// -- 设置 WriteConsole 等函数的字符属性
SetConsoleTextAttribute(hOut, wTextColor | wTextBackgroundColor);
};
实例测试
[cpp] view
plaincopy
int main()
{
CMyConsole myConsole;
myConsole.SetTextColor(RED);
printf("这是红字\n");
myConsole.SetTextColor(RED, true);
printf("这是加亮红字\n");
myConsole.SetTextColor(RED|BLUE, true);
printf("这是加亮紫字\n");
myConsole.SetTextColor(BLACK);
myConsole.SetTextBackgroundColor(RED|BLUE|GREEN);
printf("这是白底黑字\n");
myConsole.SetTextColor(GREEN);
myConsole.SetTextBackgroundColor(RED|BLUE|GREEN, true);
printf("加亮白底绿字 ");
system("pause");
return 0;
}
设置字符属性
VC控制台提供了一个设置文本属性的函数,它的作用包括设置文本颜色,设置文本背景颜色,以及下划线等。
[cpp] view
plaincopy
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // 句柄
WORD wAttributes // 文本属性
);
文本属性包含以下内容:
[cpp] view
plaincopy
FOREGROUND_BLUE // 文本颜色包含蓝色
FOREGROUND_GREEN // 文本颜色包含绿色
FOREGROUND_RED // 文本颜色包含红色
FOREGROUND_INTENSITY // 文本颜色加亮
BACKGROUND_BLUE // 背景含蓝色
BACKGROUND_GREEN // 背景含绿色
BACKGROUND_RED // 背景含红色
BACKGROUND_INTENSITY // 背景加亮
COMMON_LVB_LEADING_BYTE // 首字节
COMMON_LVB_TRAILING_BYTE // 末字节
COMMON_LVB_GRID_HORIZONTAL // 首行
COMMON_LVB_GRID_LVERTICAL // 左列
COMMON_LVB_GRID_RVERTICAL // 右列
COMMON_LVB_REVERSE_VIDEO // 翻转前景及背景属性
COMMON_LVB_UNDERSCORE // 下划线
设置文本颜色及设置文本背景颜色
就目前看来,我只需要两个功能就可以了。一个是对输出文本的颜色控制,另一个是文本的背景颜色。通过一些方法把它们从原先的函数中分离开来。
[cpp] view
plaincopy
// ---- 在头文件中枚举基本颜色常数,使用它们来设置颜色
enum TEXT_COLOR{
BLACK = 0,
RED = 1,
BLUE = 2,
GREEN = 4,
};
[cpp] view
plaincopy
public:
// ---- 设置文本(背景)颜色
// @param int [in] 颜色属性,TEXT_COLOR常量组合使用时会转化为int
// @param bool = flase [in] 颜色是否加亮
void SetTextColor(int color, bool bIntensity=false);
void SetTextBackgroundColor(int color, bool bIntencity=false);
private:
// -- 头文件中声明两个成员变量,用来存放当前文本的颜色信息
// -- 避免设置文本颜色的时候无法设置背景颜色的情况
WORD wTextColor;
WORD wTextBackgroundColor;
代码实现
[cpp] view
plaincopy
// ---- 设置输出的文本颜色
void CMyConsole::SetTextColor(int color, bool bIntensity)
{
wTextColor = 0;
if (color & RED)
{
wTextColor |= FOREGROUND_RED;
}
if (color & BLUE)
{
wTextColor |= FOREGROUND_BLUE;
}
if (color & GREEN)
{
wTextColor |= FOREGROUND_GREEN;
}
if (bIntensity)
{
wTextColor |= FOREGROUND_INTENSITY;
}
// -- 设置 WriteConsole 等函数的字符属性
// @param HANDLE [in] 控制台句柄
// @param WORD [in] 文本属性
// #return bool
SetConsoleTextAttribute(hOut, wTextColor | wTextBackgroundColor);
};
// ---- 设置输出文本的背景颜色
void CMyConsole::SetTextBackgroundColor(int color, bool bIntensity)
{
wTextBackgroundColor = 0;
if (color & RED)
{
wTextBackgroundColor |= BACKGROUND_RED;
}
if (color & BLUE)
{
wTextBackgroundColor |= BACKGROUND_BLUE;
}
if (color & GREEN)
{
wTextBackgroundColor |= BACKGROUND_GREEN;
}
if (bIntensity)
{
wTextBackgroundColor |= BACKGROUND_INTENSITY;
}
// -- 设置 WriteConsole 等函数的字符属性
SetConsoleTextAttribute(hOut, wTextColor | wTextBackgroundColor);
};
实例测试
[cpp] view
plaincopy
int main()
{
CMyConsole myConsole;
myConsole.SetTextColor(RED);
printf("这是红字\n");
myConsole.SetTextColor(RED, true);
printf("这是加亮红字\n");
myConsole.SetTextColor(RED|BLUE, true);
printf("这是加亮紫字\n");
myConsole.SetTextColor(BLACK);
myConsole.SetTextBackgroundColor(RED|BLUE|GREEN);
printf("这是白底黑字\n");
myConsole.SetTextColor(GREEN);
myConsole.SetTextBackgroundColor(RED|BLUE|GREEN, true);
printf("加亮白底绿字 ");
system("pause");
return 0;
}
相关文章推荐
- Android webkit,webview和chrome的关系
- 在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
- Sublime Text2安装Package Control
- iOS_CoreData的使用
- 下次就不要到处搜索路径怎么获得了,to myself
- 代码编写布局的顺序的一点疑惑
- Sql Server查看系统日志
- hdu1002——A + B Problem II
- onActivityResult与activity启动模式singleTask或singleInstance冲突
- 请你踏实一点!你没有你想的那么好
- Storage SPC标准测试
- 控制台界面控制(四)
- iOS编程 -- webView的使用
- Gmap.net 怎么导入离线地图
- Android安全-对称加密和非对称加密
- Oracle 11g 大小写问题
- zhi pian man tian fei
- Spring学习笔记—装配Bean
- Spring学习笔记—装配Bean
- Oracle 11g 密码过期解决方案