一、用到的函数(获得指向标准输入,标准输出和标准错误设备的句柄)
1.GetStdHandle:
HANDLE GetStdHandle(
DWORD nStdHandle // input, output, or error device
);
Value | Meaning |
STD_INPUT_HANDLE | Standard input handle |
STD_OUTPUT_HANDLE | Standard output handle |
STD_ERROR_HANDLE | Standard error handle |
如:
HANDLE hconsole;
hconsole=GetStdHandle(STD_OUTPUT_HANDLE);
2.SetConsoleTextAttribute (设置控制台下前景色和前景色)
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // handle to console screen buffer
WORD wAttributes // text and background colors
);
wAttributes是WORD类型,双字节,它的取值如下:
FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, and BACKGROUND_INTENSITY
它们在WINCON.H中的定义:
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
#define FOREGROUND_GREEN 0x0002 // text color contains green.
#define FOREGROUND_RED 0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
#define BACKGROUND_GREEN 0x0020 // background color contains green.
#define BACKGROUND_RED 0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
这和命令提示符中使用color命令的结果是一致的。Color命令的使用说明如下:
颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
由此,我们得出:如果我们只是想简单定义控制台下的输出,只须指定wAttribute的低字节就行了,其中低字节
低四位 前景色(文本颜色)
高四位 背景色
二、示例
如:指定控制台下背景色为黑色,前景色为淡绿色
#include<stdio.h>
#include<windows.h>
void main()
{
HANDLE hconsole;
hconsole=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hconsole,MAKEWORD(10,0));//wAttributes值为0x 000a
printf("Hello,World!/n");
}
这和命令提示符下:color 0a 的结果是一样的,本人比较喜欢这一颜色,保存这种属性,则下次再次打开命令提示符时,也是这种颜色。