//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// // TextConsoleWin32.h: Win32 interface for the TextConsole class. // ////////////////////////////////////////////////////////////////////// #if !defined TEXTCONSOLE_WIN32_H #define TEXTCONSOLE_WIN32_H #pragma once #ifdef _WIN32 #include #include "TextConsole.h" #define MAX_CONSOLE_TEXTLEN 256 #define MAX_BUFFER_LINES 30 class CTextConsoleWin32 : public CTextConsole { public: CTextConsoleWin32(); virtual ~CTextConsoleWin32() { }; // CTextConsole bool Init(); void ShutDown( void ); void Print( char *pszMsg ); void SetTitle( char * pszTitle ); void SetStatusLine( char * pszStatus ); void UpdateStatus( void ); char * GetLine( int index, char *buf, int buflen ); int GetWidth( void ); void SetVisible( bool visible ); protected: // CTextConsoleWin32 void SetColor( WORD ); void PrintRaw( const char * pszMsg, int nChars = -1 ); private: char m_szConsoleText[ MAX_CONSOLE_TEXTLEN ]; // console text buffer int m_nConsoleTextLen; // console textbuffer length int m_nCursorPosition; // position in the current input line // Saved input data when scrolling back through command history char m_szSavedConsoleText[ MAX_CONSOLE_TEXTLEN ]; // console text buffer int m_nSavedConsoleTextLen; // console textbuffer length char m_aszLineBuffer[ MAX_BUFFER_LINES ][ MAX_CONSOLE_TEXTLEN ]; // command buffer last MAX_BUFFER_LINES commands int m_nInputLine; // Current line being entered int m_nBrowseLine; // current buffer line for up/down arrow int m_nTotalLines; // # of nonempty lines in the buffer int ReceiveNewline( void ); void ReceiveBackspace( void ); void ReceiveTab( void ); void ReceiveStandardChar( const char ch ); void ReceiveUpArrow( void ); void ReceiveDownArrow( void ); void ReceiveLeftArrow( void ); void ReceiveRightArrow( void ); private: HANDLE hinput; // standard input handle HANDLE houtput; // standard output handle WORD Attrib; // attrib colours for status bar char statusline[81]; // first line in console is status line }; #endif // _WIN32 #endif // !defined TEXTCONSOLE_WIN32_H