Для того, чтобы вывести символ бесконечности в консоли Visual C++ я использую WinApi. Для того, чтобы код сработал, в настройках проекта нужно поменять Юникод на многобайтовую кодировку (иначе могут возникать ошибки)
Поменять на многобайтовую кодировку. (В свойствах проекта)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <iostream> #include <windows.h> using namespace std; void infinity(int x,int y) //Это функция в дальнейшем будет выводить символ бесконечности { HWND handle = FindWindow("ConsoleWindowClass", NULL); //Ищу Хандл окна консоли HDC dc = GetDC(handle); //Получаю Хандл консоли в переменную HPEN pen=CreatePen(PS_SOLID,1,RGB(255,255,255)); //Создаю ручку и задаю ей цвет HBRUSH brush=CreateSolidBrush(RGB(0,0,0)); //Создаю кисть и задаю ей цвет SelectObject(dc,pen); //Выбираю созданную ручку SelectObject(dc,brush); //Выбираю созданную кисть int dx=7; //С этими значениями лучше поиграть, сами поймете что это y=y+2; Ellipse(dc,x,y,x+dx,y+dx); //Левая половина бесконечности x+=dx; Ellipse(dc,x,y,x+dx,y+dx); //Правая половина бесконечности } int main() { char T[]="Text"; //Какой-то текст, можете поменять cout<<T; infinity(sizeof(T)*8,1); //Вывожу текст и за ним бесконечность cin.get(); return 0; } |
Я сделал только для первой строки. Если ваша программа выводит текст в каком-то одном определенном месте, то достаточно поменять значение y для функции вывода символа бесконечности. В другом случае будет необходимо выполнять какие-то расчеты, приблизительно как у меня для значения x. В моем примере для значения y установлена цифра 1, а для x формула. Для того, чтобы выводить на необходимой строке, а не на первой (если неизвестно заранее какая строка будет), нужно будет подобрать какой-то коэффициент (мне лень), как у меня сделано для значения по x (к=8), а потом при каждом переносе строки учитывать, что произошел перенос и по y выводить по формуле с коэффициентом. В любом случае то, что я предлагаю мне кажется гемморным и лучше если заранее знать в какой строке будет вывод текста с символом бесконечности.
На всякий случай еще один код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include <iostream> #include <windows.h> using namespace std; void infinity(int x,int y) { HWND handle = FindWindow("ConsoleWindowClass", NULL); HDC dc = GetDC(handle); HPEN pen=CreatePen(PS_ALTERNATE,1,RGB(255,255,255));; HBRUSH brush=CreateSolidBrush(RGB(0,0,0)); SelectObject(dc,pen); SelectObject(dc,brush); int dx=7; //y=y+2; x=x*7+5; Ellipse(dc,x,y,x+dx,y+dx); x+=dx; Ellipse(dc,x,y,x+dx,y+dx); } int k(int &dy) { dy=dy+11; return dy; } int main() { system("CHCP 1251"); char T[255]=""; int y=5; //Начало будет со второй строки strcpy(T,"jjjhgffjhjhhj"); cout<<T<<"\n"; k(y); infinity(strlen(T),y); strcpy(T,"jjjhgff"); cout<<T<<"\n"; k(y); infinity(strlen(T),y); strcpy(T,"jjjhgffmhh"); cout<<T<<"\n"; k(y); infinity(strlen(T),y); strcpy(T,"jjjhgffmhhffffff");cout<<T<<" "; cout<<"34343\n"; k(y); infinity(strlen(T),y); strcpy(T,"jjjhgffmhh"); cout<<T<<"\n"; k(y); infinity(strlen(T),y); cin.get(); return 0; } |
В коде заполняется текст для вывода на экран, выводится вместе с символом переноса строки, наращивается y и далее выводится символ бесконечности.
Если нужно отразить текст+бесконечность+текст в одной строке, то сначала выводим все кучоски строки и в конце все символы бесконечности. (Сначала строка -потом графика) Строка 43. Не забываем оставлять место, чтобы не затереть текстом значок бесконечности (в 43 — это пробелы, в остальных перенос строки)
___________
Если Вы используете mingw, то надо компилровать с флагом
-mwindows
Добавить комментарий