90 lines
2.5 KiB
C++
90 lines
2.5 KiB
C++
#if defined(__FLAT__)
|
|
#ifndef _COMMON_CONSOLE_HPP_
|
|
#define _COMMON_CONSOLE_HPP_
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _COMMON_SCREENBUFFERINFO_HPP_
|
|
#include <common/scrnbuff.hpp>
|
|
#endif
|
|
|
|
class Coord;
|
|
|
|
class Console
|
|
{
|
|
public:
|
|
enum Attribute{ForegroundBlue=FOREGROUND_BLUE,ForegroundGreen=FOREGROUND_GREEN,
|
|
ForegroundRed=FOREGROUND_RED,ForegroundIntensity=FOREGROUND_INTENSITY,
|
|
BackgroundBlue=BACKGROUND_BLUE,BackgroundGreen=BACKGROUND_GREEN,
|
|
BackgroundRed=BACKGROUND_RED,BackgroundIntensity=BACKGROUND_INTENSITY};
|
|
enum ConsoleType{Read=GENERIC_READ,Write=GENERIC_WRITE,ReadWrite=GENERIC_READ|GENERIC_WRITE};
|
|
// Console(ConsoleType consoleType=(ConsoleType)((int)Write|(int)Read),bool forceCreate=false);
|
|
Console();
|
|
Console(ConsoleType consoleType,bool forceCreate);
|
|
virtual ~Console();
|
|
WORD write(const String &consoleString);
|
|
WORD write(const BYTE consoleBYTE);
|
|
WORD writeLine(const String &consoleString);
|
|
WORD read(void);
|
|
WORD read(String &consoleString);
|
|
BOOL readBufferLine(int row,String &lineString);
|
|
WORD setConsoleMode(DWORD consoleMode);
|
|
WORD setConsoleAttribute(WORD consoleAttributes);
|
|
WORD fillConsoleOutputAttribute(WORD colorAttr,DWORD numChars,const Coord &writeCoord);
|
|
WORD fillConsoleOutputCharacter(TCHAR outChar,DWORD nLength,const Coord &writeCoord);
|
|
const ConsoleScreenBufferInfo &getConsoleScreenBufferInfo(void)const;
|
|
operator HANDLE(void);
|
|
private:
|
|
HANDLE mhConsole;
|
|
WORD mHasConsole;
|
|
DWORD mGenericResult;
|
|
ConsoleScreenBufferInfo mConsoleScreenBufferInfo;
|
|
bool mIsSystemConsole;
|
|
};
|
|
|
|
inline
|
|
WORD Console::write(const String &consoleString)
|
|
{
|
|
if(!mhConsole)return FALSE;
|
|
if(consoleString.isNull())return FALSE;
|
|
::WriteConsole(mhConsole,consoleString,consoleString.length(),&mGenericResult,0);
|
|
return TRUE;
|
|
}
|
|
|
|
inline
|
|
WORD Console::write(const BYTE consoleBYTE)
|
|
{
|
|
if(!mhConsole)return FALSE;
|
|
::WriteConsole(mhConsole,&consoleBYTE,sizeof(consoleBYTE),&mGenericResult,0);
|
|
return TRUE;
|
|
}
|
|
|
|
inline
|
|
WORD Console::writeLine(const String &consoleString)
|
|
{
|
|
if(!write(consoleString))return FALSE;
|
|
return write("\n");
|
|
}
|
|
|
|
inline
|
|
WORD Console::setConsoleMode(DWORD consoleMode)
|
|
{
|
|
if(!mhConsole)return FALSE;
|
|
return ::SetConsoleMode(mhConsole,consoleMode);
|
|
}
|
|
|
|
inline
|
|
WORD Console::setConsoleAttribute(WORD consoleAttributes)
|
|
{
|
|
if(!mhConsole)return FALSE;
|
|
return ::SetConsoleTextAttribute(mhConsole,consoleAttributes);
|
|
}
|
|
|
|
inline
|
|
const ConsoleScreenBufferInfo &Console::getConsoleScreenBufferInfo(void)const
|
|
{
|
|
return mConsoleScreenBufferInfo;
|
|
}
|
|
#endif
|
|
#endif
|