Всем привет. Столкнулся с интересной задачей - создать библиотеку для графической визуализации консольного окна. Т.е. по командам должны меняться цвет фона/текста, место текста в окне, размер шрифта. Также доступна возможность создать текстовое поле, цвет и размер которого можно выбирать. Что-то у меня уже есть. Но проблема в том, что оно даже не компилируется. Win.cpp Код | #include "win.h" namespace lng{ HANDLE console=GetStdHandle(STD_OUTPUT_HANDLE);
class colorClass short color; public: bool setcolor(short); short getcolor();
colorClass::colorClass(){ color = 0b00001111; }; colorClass::~colorClass(){ SetConsoleTextAttribute(console,15); }; short colorClass::getcolor(){ return color; }; bool colorClass::setcolor(short color) { this->spalva = spalva; return true; }; cordinatesClass CORD cordinate; public: bool setcord(CORD); alternative: bool setcord(short, short); CORD getcord(); alternative: void getcord(short&, short&); cordinatesClass::cordinatesClass(){ cordinate.X = 5; cordinate.Y = 5; } void cordinatesClass::getcord(short& X, short& Y){ X=cordinate.X; Y=cordinate.Y; } bool cordinatesClass::setcord(short X, short Y){ this->cordinate.X = X; this->cordinate.Y = Y; return true; } winClass :public colorClass cordinatesClass cord, size; bool doubleline, frame; bool setcolor(short); short getcolor(); winClass(); ~winClass(); void draw(); bool setcord(short, short); bool setsize(short, short); void setframe(bool); void setline(bool); winClass::winClass(){ doubleline=true; frame=true; } void winClass::draw(){ short tempX, tempY; this->cord.getcord(tempX, tempY); CORD tempK={tempX, tempY}; SetConsoleTextAttribute(console, this->getcolor()); this->size.getcord(tempX, tempY); for(int y=0; y<tempY; y++) { tempK.Y = tempY + y; SetConsoleCursorPosition(console, tempK); std::cout << std::setw(tempX)<< ' '; } } bool winClass::setcord(short cordinateX, short cordinateY){ this->cord.setcord(cordinateX, cordinateY); }; bool winClass::setsize(short sizeX, short sizeY){ }; void winClass::setframe(bool showframe){ }; void winClass::setline(bool doubleline){ }; }
|
Win.h Код | #ifndef WIN_H #define WIN_H #include <windows.h> #include <iostream> #include <iomanip>
namespace lng{ class colorClass{ private: short color; public: colorClass(); ~colorClass(); bool setcolor(short); short getcolor(); };
class cordinatesClass{ CORD cordinate; public: cordinatesClass(); bool setcord(short, short); void getcord(short&, short&); };
class winClass:public colorClass { private: cordinatesClass cord, size; bool doubleline, frame; public: bool setcolor(short); short getcolor(); winClass(); void draw(); bool setcord(short, short); bool setsize(short, short); void setframe(bool); void setline(bool); };
class textClass : public winClass { private: std::string text; public: bool settext(std::string); void draw(); }; } #endif
|
Main.cpp Код | #include <iostream> #include "win.h" using namespace std;
int main() { lng::winClass newwin, nextwin; newwin.setcolor(0b00011010); newwin.draw(); return 0; }
|
Помогите разобраться в коде. А то без очевидного результата не могу опознать что в нем хорошо, а что нет.
|