Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Возврат каретки на предыдущую строку


Автор: mod74 5.11.2009, 18:12
Здравствуйте! Помогите пожалуйста! Как в консольном приложении Visual C++ вернуть положение курсора на одну или несколько строк вверх?! Заранее спасибо!

Автор: bsa 5.11.2009, 18:21
Кажется как-то так:
Код
#include <conio.h>
gotoxy(1, gety()-2);

Автор: andrew_121 5.11.2009, 18:25
bsa, Помоему, gotoxy() чисто борландовская кака(возможно ошибаюсь)

Автор: bsa 5.11.2009, 18:40
ну тогда:
http://msdn.microsoft.com/en-us/library/ms683163(VS.85).aspx
и
http://msdn.microsoft.com/en-us/library/ms686025(VS.85).aspx

Автор: Anikmar 5.11.2009, 19:30
Цитата(andrew_121 @  5.11.2009,  18:25 Найти цитируемый пост)
bsa, Помоему, gotoxy() чисто борландовская кака(возможно ошибаюсь) 


Почему же кака? Это не кака, а очень полезная и хорошая функция. И если бордланд ее изобрел - только похвально. На самом деле отсутствие такой полезной "каки" в микрософтовском компиляторе под ДОС (потом, кстати, они такую каку встроили кажется, точно не помню) жутко выводило из себя весь наш отдел в свое время - приходилось напрямую работать с прерываниями и видеопамятью.


Автор: andrew_121 5.11.2009, 21:50
Anikmar, Почему из всего моего поста Вы заметили только:
Цитата(andrew_121 @  5.11.2009,  18:25 Найти цитируемый пост)
кака

?

Я ведь хотел сказать что это не стандартная функция, и она не поддерживается почти никаким компилятором.

Автор: Dov 5.11.2009, 22:51
Цитата(mod74 @  5.11.2009,  17:12 Найти цитируемый пост)
Как в консольном приложении Visual C++ вернуть положение курсора на одну или несколько строк вверх?!

Вот, небольшой примерчик...
Код
#define LEN     13
#define TIMEOUT 200

void gotoxy(short x, short y)
{
    HANDLE    StdOut    = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD    coord    = {x, y};

    SetConsoleCursorPosition(StdOut, coord);
}

int wherex()
{
    HANDLE                        StdOut    = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO    csbi;

    GetConsoleScreenBufferInfo(StdOut, &csbi); 

    return int(csbi.dwCursorPosition.X);
}

int wherey()
{
    HANDLE                        StdOut    = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO    csbi;

    GetConsoleScreenBufferInfo(StdOut, &csbi); 

    return int(csbi.dwCursorPosition.Y);
}

int main() 
{
    char * str        = "qwerty";
    int    len        = strlen(str);
    int    coord_Y    = -1;    
    int    i;

    for(i = 0; i < LEN; i++)
    {
        gotoxy(wherex(), ++coord_Y);
        printf(str);
        Sleep(TIMEOUT);
    }

    for(i = 0; i < LEN - 1; i++)
    {
        gotoxy(wherex() - len * 2, ++coord_Y);
        printf(str);
        Sleep(TIMEOUT);
    }

    for(i = 0; i < LEN / 2; i++)
    {
        gotoxy(wherex() - len, coord_Y -= 2);
        printf(str);
        Sleep (TIMEOUT);
    }

    for(i = 0; i < LEN / 2 - 2; i ++)
    {
        gotoxy(wherex() + 1, wherey());
        printf(str);
        Sleep (TIMEOUT);
    }

    gotoxy(wherex(), wherey() + LEN + 1);

    return 0;
}


з.ы. windows.h нужно подключить.

Автор: andrew_121 5.11.2009, 23:20
Dov, BGI написанный под винду: http://codecutter.org/tools/winbgim/

Автор: Dov 5.11.2009, 23:29
andrew_121,  у чела Visual C++. 

Автор: Anikmar 5.11.2009, 23:40
Цитата(andrew_121 @  5.11.2009,  21:50 Найти цитируемый пост)
Anikmar, Почему из всего моего поста Вы заметили только:

Не обижайтесь, но вся ваша фраза была такая:
Цитата(andrew_121 @  5.11.2009,  18:25 Найти цитируемый пост)
bsa, Помоему, gotoxy() чисто борландовская кака(возможно ошибаюсь) 

Больше в посте ничего не было - и я заметил, что вы назвали данную функцию "кАкой"
Вот я и отписался.  smile Я прекрасно знаю вашу "любовь" к борланду и отписался чисто справедливости ради. Не все у борланда криво, и не все у микрософта круто  smile (религиозные войны не начинать!). Функция gotoxy на мой взгляд достойна помещения в стандарт. (Может само слово goto действует на разработчиков стандарта плохо?  smile )

 smile 
Тут кстати недавно прооскочила тема от Лены по поводу нового Борланда и в качестве одного из плохого в нем было названо плохая  работа с БД - типа в VS намного лучше. Смешно, но я в свое время соскочил на борланд с микрософта именно из-за того, что в нем было комфортно писать приложения именно для работы м БД... Это был 1997 год и на то время микрософтовский компилятор для работы с БД использовали только мозахисты ИМХО...

Автор: andrew_121 6.11.2009, 01:10
Цитата(Anikmar @  5.11.2009,  23:40 Найти цитируемый пост)
Я прекрасно знаю вашу "любовь" к борланду

 smile 


Цитата(Anikmar @  5.11.2009,  23:40 Найти цитируемый пост)
Тут кстати недавно прооскочила тема от Лены по поводу нового Борланда

Где статья? Что за борланд?


Цитата(Anikmar @  5.11.2009,  23:40 Найти цитируемый пост)
в качестве одного из плохого в нем было названо плохая  работа с БД - типа в VS намного лучше. Смешно, но я в свое время соскочил на борланд с микрософта именно из-за того, что в нем было комфортно писать приложения именно для работы м БД... Это был 1997 год и на то время микрософтовский компилятор для работы с БД использовали только мозахисты ИМХО... 

Даже не предвтавляю о чем вы говорите, икакое отношение среда разработки имеет к ЯП? smile  Да ладно..

Автор: Anikmar 6.11.2009, 01:18
Цитата(andrew_121 @  6.11.2009,  01:10 Найти цитируемый пост)
Где статья? Что за борланд?

В ветке билдера топик такой есть

Цитата(andrew_121 @  6.11.2009,  01:10 Найти цитируемый пост)
Даже не предвтавляю о чем вы говорите, икакое отношение среда разработки имеет к ЯП?   Да ладно.. 


Так я офтопил - о чем сразу и признался  smile  Так просто к слову пришлось.
Dov своим примером напомнил мне как раз 95-97 год прошлого века. Примерно так и приходилось извращаться из-за отсутствия нужной "каки" у микрософта.  smile  Кстати, по поводу отношения среды к ЯП - тут достаточно много конкретики по VS рассматривается, хотя вроде не та ветка.

Автор: teatorb 13.9.2022, 14:45
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)