giovedì 31 ottobre 2013

Libreria crt Borland-style per C++ (Windows)

Preso dalla nostalgia dei primi anni di programmazione sul vecchio Borland Pascal (e il suo fantastico IDE in modalità testo in DOS), ho pensato di ricreare la vecchia libreria "crt" della Borland sul C++, per la console di Windows. 

Ho creato una classe "Console", che scrive e legge sullo stdin e stout e non faccio uso delle librerie standard del C++ (quindi è una classe windows-dipendente), fornendo alcuni scarni metodi per un minimo di I/O. Invero faccio uso di una libreria standard del c/c++ (stdarg) per consentire alla funzione printf (scritta da me) di ricevere un numero indefinito di parametri.
Header della classe Console:
class Console
{
    public:
        Console();
        ~Console();
        void ClrEol();
        void ClrScr();
        void cursorbig();
        void cursoroff();
        void cursoron();
        void Delay(DWORD);
        bool GotoXY(int xx,int yy);
        bool KeyPressed();
        char ReadKey();
        void Sound(DWORD,DWORD);
        void TextBackground(DWORD val);
        void TextColor(DWORD val);
        int WhereX() { return coord.X; }
        int WhereY() { return coord.Y; }
        DWORD GetTextColor() { return tc; }
        DWORD GetTextBackground() { return bc; }
        HANDLE GetHandle(){return handle;}
        DWORD printf(const char *lpBuffer,...);
        DWORD printc(char c);
        void ReadLn(int&);
        void ReadLn(char*);
        void saveScreen();
        void restoreScreen();
    protected:
    private:
        DWORD tc;
        DWORD bc;
        COORD coord;
        HANDLE handle;
        LPSTR charbuf;
        LPWORD attrbuf;
        bool bufpieno;
        void Setx(int n){coord.X=n;}
        void Sety(int n){coord.Y=n;}
};

Nota bene: libreria fortemente ancorata a Windows, senza il quale non può funzionare.

Qui potete leggere la documentazione, mentre da qui potete scaricare i file sorgente.

Nessun commento:

Posta un commento