I have source to change color, but it works only on Windows.
Maybe some headers will be missing...
Code:
/*******************************************************************
[File name] :
console.h
[date] :
2.7.2005
[Purpose] :
*******************************************************************/
#ifndef Console_h
#define Console_h
//-----------------------------------------------------------------
// eColors enumeration
// - Cerror is used as return value in catch statements
// when error occures.
// - null is added for balance.
//-----------------------------------------------------------------
enum eColors
{
CERROR = -1, CNULL,
CDARKEST_BLUE, CDARK_GREEN, CDARK_BLUE, CDARK_RED, CDARK_PURPLE,
CGOLD, CLIGHT_GRAY, CGRAY, CBLUE, CLIGHT_GREEN, CCYAN,
CRED, CPURPLE, CYELLOW, CWHITE
};
//-----------------------------------------------------------------
// class Console
//-----------------------------------------------------------------
class Console
{
public:
Console();
~Console()
{
cout << "\n~\tConsole. color = " << _color;
}
eColors getColor() const;
void setColor(eColors);
void clrscr() const; //Clear the screen
private:
eColors _color;
};
//-----------------------------------------------------------------
// End
//-----------------------------------------------------------------
#endif /* (Console_h) */
Code:
/*******************************************************************
[File name] :
console.cpp
[date] :
2.7.2005
[Purpose] :
Implementation of the class 'console' from the console.h .
*******************************************************************/
//-----------------------------------------------------------------
// Includes
//-----------------------------------------------------------------
#include "Console.h"
#include <iostream>
using std::cout;
using std::endl;
#include <exception>
using std::cerr;
#include <windows.h>
//-----------------------------------------------------------------
// Global variables
//-----------------------------------------------------------------
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // For colors
//-----------------------------------------------------------------
// Constructors & destructors
//-----------------------------------------------------------------
Console::Console():_color(CCYAN)
{
try
{
Console::setColor(CDARK_GREEN);
cout << "\nConsole created with color " << getColor();
}
catch(exception &exc)
{
cerr << exc.what();
}
}
//-----------------------------------------------------------------
// Accessors
//-----------------------------------------------------------------
eColors Console::getColor() const
{
try
{
cout << "\n\t\tgetColor() , " << eColors (Console::_color )<< "\n";
return Console::_color;
}
catch(exception &exc)
{
cerr << exc.what();
}
return eColors(-1); // -1 is error value
}
//---------------------------------------
void Console::setColor(eColors Color)
{
try
{
if (Color > 15)
throw ("\nColor doesn't exist!");
Console::_color = Color;
SetConsoleTextAttribute(hConsole , Console::_color);
}
catch(exception &exc)
{
cerr << exc.what();
getchar();
exit(-1);
}
catch(const char *msg)
{
Console::setColor(CRED);
cerr << "\n\nError occured!\n\n*msg : " << msg;
cerr << "\nPress ENTER to exit....";
getchar();
exit(-2);
}
}
//-----------------------------------------------------------------
// Other functions
//-----------------------------------------------------------------
void Console::clrscr() const
{
try
{
COORD coordScreen = { 0, 0 };
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
}
catch(exception &exc)
{
cerr << exc.what();
}
}
//-----------------------------------------------------------------
// End
//-----------------------------------------------------------------
USAGE :
Code:
...
Console *Con = new Console();
...
Con->clrscr();
Con->setColor(CDARKBLUE);
...
delete Con;