Изменение позиции курсора - C (СИ)
Формулировка задачи:
Всем доброго времени суток! Может кто нибудь подсказать как изменить позицию текстового курсора ?
Решение задачи: «Изменение позиции курсора»
textual
Листинг программы
HANDLE consoleoutput = GetStdHandle(STD_OUTPUT_HANDLE);
COORD Coord;
CONSOLE_SCREEN_BUFFER_INFO ScreenBufferInfo = { 0 };
// Получить информацию о состоянии буфера экрана консоли,
// где хранится текущее положение курсора
GetConsoleScreenBufferInfo(consoleoutput, &ScreenBufferInfo);
// Координату Х оставить прежней
Coord.X = ScreenBufferInfo.dwCursorPosition.X;
// Меняем координату Y
Coord.Y = ScreenBufferInfo.dwCursorPosition.Y + 1;
// Установать курсор
SetConsoleCursorPosition(consoleoutput, Coord);
Объяснение кода листинга программы
- Подключается библиотека kernel32.dll, функция GetStdHandle(STD_OUTPUT_HANDLE) из этой библиотеки используется для получения дескриптора консоли.
- Объявляются переменные:
- HANDLE consoleoutput — дескриптор консоли;
- COORD Coord — структура, содержащая координаты курсора;
- CONSOLE_SCREEN_BUFFER_INFO ScreenBufferInfo — структура, содержащая информацию о буфере экрана консоли.
- Получается информация о состоянии буфера экрана консоли, где хранится текущее положение курсора, с помощью функции GetConsoleScreenBufferInfo(consoleoutput, &ScreenBufferInfo).
- Координата X (горизонтальная) оставляется без изменений, т.е. Coord.X = ScreenBufferInfo.dwCursorPosition.X.
- Меняем координату Y (вертикальная) на единицу больше, т.е. Coord.Y = ScreenBufferInfo.dwCursorPosition.Y + 1.
- Устанавливаем курсор на новую позицию с помощью функции SetConsoleCursorPosition(consoleoutput, Coord).