Цитата(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 нужно подключить.
|