更改 windows下控制台 输出的字体颜色(前景色、背景色)和输出位置(转载)

转载 2007年10月15日 16:44:00
#include <iostream>
#include <windows.h>
namespace wincsl
{
    using namespace std;

    enum clr{ FB = FOREGROUND_BLUE,
              FG = FOREGROUND_GREEN,
              FR = FOREGROUND_RED,
              FI = FOREGROUND_INTENSITY,
              BB = BACKGROUND_BLUE,
              BG = BACKGROUND_GREEN,
              BR = BACKGROUND_RED,
              BI = BACKGROUND_INTENSITY };

    class color
    {
    public:
        explicit color( WORD wAttributes = getcurrentvalue_() ) : wAttributes_(wAttributes)
        {
        }
        WORD getvalue( void ) const
        {
            return wAttributes_;
        }
    private:
        static WORD getcurrentvalue_( void )
        {
            CONSOLE_SCREEN_BUFFER_INFO csbi;
            ::GetConsoleScreenBufferInfo( ::GetStdHandle(STD_OUTPUT_HANDLE), &csbi );
            return csbi.wAttributes;
        }
        WORD wAttributes_;
    };
    const color setcolor( WORD wAttributes )
    {
        ::SetConsoleTextAttribute( ::GetStdHandle(STD_OUTPUT_HANDLE), wAttributes );
        return color(wAttributes);
    }
    const color setcolor( color clrAttributes )
    {
        return setcolor( clrAttributes.getvalue() );
    }
    ostream& operator<<( ostream& os, const color& wc )
    {
        return os;
    };
    istream& operator>>( istream& os, const color& wc )
    {
        return os;
    };

    class position
    {
    public:
        position( SHORT row, SHORT col ) : row_(row), col_(col)
        {
        }
        position( const position& pos = getcurrentvalue_() ) : row_(pos.row_), col_(pos.col_)
        {
        }
        SHORT getrow( void ) const
        {
            return row_;
        }
        SHORT getcol( void ) const
        {
            return col_;
        }
    private:
        static const position getcurrentvalue_( void )
        {
            CONSOLE_SCREEN_BUFFER_INFO csbi;
            ::GetConsoleScreenBufferInfo( ::GetStdHandle(STD_OUTPUT_HANDLE), &csbi );
            return position( csbi.dwCursorPosition.X, csbi.dwCursorPosition.Y );
        }
        SHORT row_, col_;
    };
    const position setpos( SHORT row, SHORT col )
    {
        COORD coord = { col, row };
        ::SetConsoleCursorPosition( ::GetStdHandle(STD_OUTPUT_HANDLE), coord );
        return position( row, col );
    }
    const position setpos( position pos )
    {
        return setpos( pos.getrow(), pos.getcol() );
    }
    ostream& operator<<( ostream& os, const position& wc )
    {
        return os;
    };
    istream& operator>>( istream& os, const position& wc )
    {
        return os;
    };
}

#include <string>
int main( void )
{
    using namespace std;
    using namespace wincsl;

    color oldcolor;

    cout << setpos(1,15) << setcolor(FB|BG) << "输入一段文字吧" << endl;

    string s;
    cin >> setpos(5,10) >> setcolor(FG|BB) >> s;
    position curpos;
    cout << setcolor(oldcolor) << "*这里是" << curpos.getrow() << "行" << curpos.getcol() << "列" << endl;

    setcolor( oldcolor );
}

 
 

C语言实现控制台输出背景颜色字体颜色变化

在大学第二次接触C语言这么课,想把学习中遇到的困惑和一些小技巧总结下来。   要实现控制台的输出背景颜色变化有两种方式,一种是system(“clolor **”),另外一种是使用windows AP...
  • u010166404
  • u010166404
  • 2015年04月10日 14:54
  • 3413

C++ 更改控制台显示文本颜色

C++ 更改控制台显示文本颜色   两种方法 一种方法 获得控制台输入输出句柄 函数原型: HANDLE GetStdHandle(DWORD nStdHandle)...
  • poem_of_sunshine
  • poem_of_sunshine
  • 2014年03月06日 16:47
  • 1575

Lua 中改变console的输出字体颜色

windows下 调用系统函数 osexecutecommand 调用win API 编译为testdll 然后和lua代码放在一起执行 windows下: 1. 调用系...
  • ryl4046
  • ryl4046
  • 2015年12月31日 16:56
  • 512

如何在windows和Linux下输出带颜色的字体

有时候我们会在运行一些网上程序的时候会输出带有颜色的字体以及字体的背景,我们分别对windows下和Linux下实现方法说明:1、windows系统下编程实现字体颜色输出:在windows下我们是通过...
  • magiclyj
  • magiclyj
  • 2017年05月23日 10:53
  • 628

Linux和Windows下控制台字体颜色设置

colored_fputs() colored_fputs()函数用于将输出的文本“上色”并且输出。在这里有一点需要注意:Windows和Linux下控制台程序上色的方法是不一样的。Windows...
  • tkp2014
  • tkp2014
  • 2015年06月26日 22:26
  • 658

ubuntu echo输出带颜色的字体

echo要变换颜色的时候,要使用参数-e 格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m" 名称       echo - 显示一行文本 概要    ...
  • dadaxiaoxiaode
  • dadaxiaoxiaode
  • 2016年07月20日 09:45
  • 1152

【JavaScript】轻松更改网页背景与字体的颜色

JavaScript,通过点击按钮更改网页背景与字体的颜色,网页中有N个改变颜色的按钮,点击不同的按钮,网页的字体与背景就会改变成不同的颜色。很简单的JavaScript小程序。...
  • yongh701
  • yongh701
  • 2014年10月22日 20:34
  • 2773

bash输出颜色字体

字体输出颜色及终端格式控制
  • lidonghat
  • lidonghat
  • 2017年03月06日 17:59
  • 1202

让控制台输出彩色日志 windows

经常看到一些开源软件(例如NDK编译的时候,操作系统启动的时候)打印的输出很多是彩色的,这样比较容易分辨哪些是重点,增强可读性。代码如下: #include #include #define L...
  • lonelyrains
  • lonelyrains
  • 2013年04月09日 14:38
  • 1701

Unity控制台控制输出字体的颜色

今天介绍个非常NB 酷炫的Unity功能 请勿模仿 上代码 在Start()里面加上以下代码 void Start () { Debug.Log("->" + "...
  • csdn_cjt
  • csdn_cjt
  • 2016年06月08日 10:08
  • 2109
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:更改 windows下控制台 输出的字体颜色(前景色、背景色)和输出位置(转载)
举报原因:
原因补充:

(最多只允许输入30个字)