当前位置:天才代写 > tutorial > C语言/C++ 教程 > C语言节制台窗口图形界面编程之三 配置文本属性的函数

C语言节制台窗口图形界面编程之三 配置文本属性的函数

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:1119

在这里先容一个配置文本属性的函数,原型如下

BOOL SetConsoleTextAttribute(   // 配置WriteConsole等函数的字符属性    
HANDLE hConsoleOutput,          // 句柄    
WORD wAttributes                // 文本属性    
);

本栏目

顺便提一下文本属性,其实就是颜色属性,有配景致和前景致(就是字符的颜色)两类,每一类只提供三原色(红,绿,蓝)和增强色(灰色,可与其他颜色搭配利用,使颜色变亮,后头会提到)。最后尚有一个反色(不太清楚这个到底怎么用,很奇葩的对象)。示例措施如下:

#include <stdio.h>    
#include <stdlib.h>    
#include <windows.h>    
#include <conio.h>    
/*   
根基文本属性   
FOREGROUND_BLUE 蓝色   
FOREGROUND_GREEN 绿色   
FOREGROUND_RED 赤色   
FOREGROUND_INTENSITY 增强   
BACKGROUND_BLUE 蓝色配景   
BACKGROUND_GREEN 绿色配景   
BACKGROUND_RED 赤色配景   
BACKGROUND_INTENSITY 配景致增强   
COMMON_LVB_REVERSE_VIDEO 反色   
*/
        
const WORD FORE_BLUE   = FOREGROUND_BLUE;           //蓝色文本属性    
const WORD FORE_GREEN  = FOREGROUND_GREEN;          //绿色文本属性    
const WORD FORE_RED    = FOREGROUND_RED;            //赤色文本属性    
const WORD FORE_PURPLE = FORE_BLUE | FORE_RED;      //紫色文本属性    
const WORD FORE_CYAN   = FORE_BLUE | FORE_GREEN;    //青色文本属性    
const WORD FORE_YELLOW = FORE_RED | FORE_GREEN;     //黄色文本属性    
const WORD FORE_GRAY   = FOREGROUND_INTENSITY;      //灰色文本属性    
const WORD BACK_BLUE   = BACKGROUND_BLUE;           //蓝色配景属性    
const WORD BACK_GREEN  = BACKGROUND_GREEN;          //绿色配景属性    
const WORD BACK_RED    = BACKGROUND_RED;            //绿色配景属性    
const WORD BACK_PURPLE = BACK_BLUE | BACK_RED;      //紫色配景属性    
const WORD BACK_CYAN   = BACK_BLUE | BACK_GREEN;    //青色配景属性    
const WORD BACK_YELLOW = BACK_RED | BACK_GREEN;     //黄色配景属性    
const WORD BACK_GRAY   = BACKGROUND_INTENSITY;      //灰色配景属性    
        
int main()    
{    
    HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);    //得到尺度输出设备句柄    
    CONSOLE_SCREEN_BUFFER_INFO csbi;                        //界说窗口缓冲区信息布局体    
    GetConsoleScreenBufferInfo(handle_out, &csbi);          //得到窗口缓冲区信息    
    SetConsoleTextAttribute(handle_out, FORE_BLUE);    
    printf("蓝色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_RED);    
    printf("赤色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_GREEN);    
    printf("绿色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_PURPLE);    
    printf("紫色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_CYAN);    
    printf("青色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_YELLOW);    
    printf("黄色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_GRAY);    
    printf("灰色字符\n");    
    SetConsoleTextAttribute(handle_out, FORE_GREEN | FORE_BLUE | FORE_RED);    
    printf("白色字符\n");    
    SetConsoleTextAttribute(handle_out, BACK_BLUE);    
    printf("蓝色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_RED);    
    printf("赤色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_GREEN);    
    printf("绿色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_PURPLE);    
    printf("紫色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_CYAN);    
    printf("青色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_YELLOW);    
    printf("黄色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_GRAY);    
    printf("灰色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_BLUE | BACK_RED | BACK_GREEN);    
    printf("白色配景\n");    
    SetConsoleTextAttribute(handle_out, BACK_GREEN | FORE_RED); //示例:绿色配景赤色字符    
    printf("绿色配景与赤色字符的殽杂\n");    
    SetConsoleTextAttribute(handle_out, FOREGROUND_INTENSITY | FORE_RED);   //示例:亮赤色字符    
    printf("亮色的生成,与增强色融合\n");    
    return 0;    
}

C语言控制台窗口图形界面编程之三 设置文本属性的函数

上述示例措施最好用C++来中编译,因为有C语言的编译器可能IDE不支持上述的界说常量的方法。需要从这个示例中相识的是三原色的殽杂是用C语言位运算中的按位或 | 运算符,配景颜色与字符颜色的同时界说也是利用这个运算符融合。别的,将任意颜色与对应的增强色(灰色,有前景和配景两种,需要对应)融合后会成为对应颜色的高亮版,好比赤色字符与前景增强色的融合会团结成亮赤色。

#p#分页标题#e#

至于反色,各人可以试试,当我配置了文本属性为反色后,输入字符都不显示了,可是下标还在移动,我预计反色将白色字符酿成了玄色字符,与玄色配景一样,所以没有显示出来。至于反色与其他的组合以及其他的颜色组合,还需要各人一起摸索、、、

From:cnblogs 龙梦之痕

 

    关键字:

天才代写-代写联系方式