最新消息:想得多,做的少。一天到晚瞎鸡巴搞。

windows控制台彩色文本函数

Windows编程 阿虚 1025浏览 0评论

.      很久之前看到觉得有用就留着了。结果到今天还真有用了。哈干脆就直接转载到这里得了。感谢原文作者分享。

这是一个能让控制台显示颜色字符和背景的代码。纯C++

#include <iostream>  
#include <windows.h>  
bool SetConsoleColor(WORD forceGroundColor, WORD backGroundColor);  
bool SetConsoleColor(WORD Color);  
int main()  
{  
    SetConsoleColor(FOREGROUND_INTENSITY | FOREGROUND_RED ,  BACKGROUND_RED | BACKGROUND_GREEN | 0x80);  
    std::cout << "Hello 高亮红 , 背景高亮黄(红+绿) !" << std::endl;  
    SetConsoleColor( 9 );  //高亮蓝 1+8  默认黑背景  
    std::cout << "Hello 高亮蓝 1+8 !" ;  
    SetConsoleColor( 0x89 );  //高亮蓝 1+8  背景灰色  
    std::cout << "Hello 高亮蓝 0x89 !" << std::endl;  
    SetConsoleColor( 7 );  //高亮蓝 1+8  背景灰色  
    std::cout << "恢复默认颜色!" << std::endl;  
    //直接调用  高亮红 默认黑背景  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED );  
    system("pause");  
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 0xA );  //亮绿  
    return 0;  
}  
/* 参数1和参数2分别是前景的颜色和背景的颜色。 
 * #define FOREGROUND_BLUE 0x1 
 * #define FOREGROUND_GREEN 0x2 
 * #define FOREGROUND_RED 0x4 
 * #define FOREGROUND_INTENSITY 0x8        //前景高亮 
 * #define BACKGROUND_BLUE 0x10 
 * #define BACKGROUND_GREEN 0x20 
 * #define BACKGROUND_RED 0x40 
 * #define BACKGROUND_INTENSITY 0x80       //背景高亮 
 */  
/*颜色参数直接使用 
White_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); 
Red_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_RED); 
Green_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_GREEN); 
Yellow_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_RED | FOREGROUND_GREEN); 
Blue_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_BLUE); 
Magenta_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_RED | FOREGROUND_BLUE); 
Cyan_Black: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | 
                        FOREGROUND_GREEN | FOREGROUND_BLUE); 
Black_Gray: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | 
                        BACKGROUND_INTENSITY); 
Black_White: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | 
                        FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE); 
Red_White: 
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY | 
                        FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | 
                        FOREGROUND_RED); 
*/  
bool SetConsoleColor(WORD forceGroundColor, WORD backGroundColor)  
{  
    // 获得缓冲区句柄。参数可以选择一下三种值:  
    //// STD_INPUT_HANDLE            标准输入的句柄  
    //// STD_OUTPUT_HANDLE           标准输出的句柄  
    //// STD_ERROR_HANDLE            标准错误的句柄  
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);  
    if (handle == 0)  
        return false;  
    //设置文本及背景颜色。  
    BOOL ret = SetConsoleTextAttribute(handle, forceGroundColor | backGroundColor);  
    return(ret == TRUE);  
}  
bool SetConsoleColor(WORD Color)  
{  
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);  
    if (handle == 0)  
        return false;  
    BOOL ret = SetConsoleTextAttribute(handle, Color);  
    return(ret == TRUE);  
}  

转载请注明:虚无 » windows控制台彩色文本函数

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址