Сдвиг экрана при выводе в послед.строку
Добавлено: 25 июл 2004, 23:51
Имеем следующую программку:
...При выводе символа 'X' в последнем, 80-ом столбце, последней, 25-ой строки, происходит переход курсора на новую строку и всё, что на экране есть, тоже смещается на одну строку вверх - в результате чего данные, записанные в самом начале, уходят в небытие... При замене оператора gotoxy(80,25) на gotoxy(80,24) или gotoxy(79,25) все работает о'кей: текст, выведенный оператором cprintf("TEST") никуда не девается, и никаких сдвигов не происходит.
...Вопрос: как можно выйти из положения?.. Есть какие-нибудь варианты?.. Средствами самого C++ ? Или придется работать непосредственно с прерываниями и функциями BIOS/DOS под DOS-приложением и WinAPI под Win32-консолью?
Код: Выделить всё
#include "conio.h"
void main()
{
textmode(C80); // переключаемся в цветн.текст. режим 80x25
window(1,1,80,25); // опред. лев.верх. и прав.ниж. углы текст.окна
textattr(WHITE+(BLACK<<4)); // белый цвет символов и черный цвет фона
clrscr(); // очищаем экран
_setcursortype(_NOCURSOR); // выключаем курсор
textattr(BLACK+(WHITE<<4)); // пишем черным по белому
gotoxy(1,1); // прыгаем в левый верхний угол экрана
cprintf("TEST"); // выводим пробный текст для теста...
gotoxy(80,25); // переходим в 80-ый столбец 25-ой строки
cprintf("X"); // пытаемся вывести символ
gotoxy(1,1); // прыгаем в левый верхний угол экрана
getch(); // пауза: ждем нажатия любой клавиши...
}
...Вопрос: как можно выйти из положения?.. Есть какие-нибудь варианты?.. Средствами самого C++ ? Или придется работать непосредственно с прерываниями и функциями BIOS/DOS под DOS-приложением и WinAPI под Win32-консолью?