Win32控制台应用程序改变输出颜色

来源:互联网 发布:淘宝原始头像 编辑:程序博客网 时间:2024/04/29 19:33

 

一、用到的函数(获得指向标准输入,标准输出和标准错误设备的句柄)

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

);

wAttributesWORD类型,双字节,它的取值如下:

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值为0x000a

printf("Hello,World!/n");

}

 

这和命令提示符下:color 0a的结果是一样的,本人比较喜欢这一颜色,保存这种属性,则下次再次打开命令提示符时,也是这种颜色。