给你的gui程序添加一个彩色的控制台

cConsole.h


#pragma once

class cConsole
{
private:
	CONSOLE_SCREEN_BUFFER_INFO						m_info;
	FILE*											m_file;
	HANDLE											m_output;
public:
	enum ConsoleTextColor {
		ConsoleText_Red,
		ConsoleText_Blue,
		ConsoleText_Green,
	};
public:
	cConsole(void);
	~cConsole(void);

	bool											Open(void);
	void											Close(void);
	void											SetConsoleTextColor(ConsoleTextColor color, bool isIntensity = false);
	void											ResetConsoleTextColor(void);
	template<typename T> cConsole&					operator << ( T val );
};

inline
void cConsole::ResetConsoleTextColor(void)
{
	SetConsoleTextAttribute(m_output, m_info.wAttributes);
}

template<typename T>
inline
cConsole& cConsole::operator << ( T val ) {
	cout << val;
	return *this;
}


cConsole.cpp


#include "StdAfx.h"
#include "cConsole.h"

cConsole::cConsole(void)
{
}

cConsole::~cConsole(void)
{
}

bool cConsole::Open()
{
	if (AllocConsole()) {
		m_output = GetStdHandle(STD_OUTPUT_HANDLE);
		GetConsoleScreenBufferInfo(m_output, &m_info);
		freopen_s(&m_file, "CONOUT$";, "w+t", stdout);
		return true;
	} else
		return false;
}

void cConsole::Close()
{
	ResetConsoleTextColor();
	FreeConsole();
}

void cConsole::SetConsoleTextColor(ConsoleTextColor color, bool isIntensity)
{	
	WORD attribute = 0;
	switch(color) {
		case ConsoleText_Red:
			attribute = FOREGROUND_RED;
			break;
		case ConsoleText_Blue:
			attribute = FOREGROUND_BLUE;
			break;
		case ConsoleText_Green:
			attribute = FOREGROUND_GREEN;
			break;
	}
	if (isIntensity)
		attribute |= FOREGROUND_INTENSITY;
	SetConsoleTextAttribute(m_output, attribute);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值