Форум программистов, компьютерный форум CyberForum.ru

Как очистить консоль , без мигания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Алексей_x86
 Аватар для Алексей_x86
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 21
18.01.2013, 00:50     Как очистить консоль , без мигания #1
Доброго времени суток.
Пишу консольную игру на С++ , и нужно постоянно перерисовывать консоль.
Но при очистке/записи в консоль происходит мигание/мерцание консоли.
Можно ли как-то от этого избавиться?
Я пробовал такие варианты :
1)system("cls");
2)clssrn();
3)Просто не очищать консоль , а рисовать такой же прямоугольник символов, как размер консоли (то есть просто прокрутка консоли)
3)Пробовал ставить курсор в начало консоли , и рисовать поверх прошлого кадра.
НО все равно есть ощутимое мигание , но я видел консольные игры на С++ без мигания.
Так как убрать мигание?
(вроде бы как-то можно сделать через буфер консоли или на WinApi но в учебниках об этот не пишут)
Спасибо за помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11816 / 6795 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
18.01.2013, 00:52     Как очистить консоль , без мигания #2
Цитата Сообщение от Алексей_x86 Посмотреть сообщение
вроде бы как-то можно сделать через буфер консоли или на WinApi но в учебниках об этот не пишут
Функции консоли
Алексей_x86
 Аватар для Алексей_x86
1 / 1 / 0
Регистрация: 17.01.2013
Сообщений: 21
18.01.2013, 00:56  [ТС]     Как очистить консоль , без мигания #3
Спасибо.
Maskit
0 / 0 / 0
Регистрация: 22.05.2016
Сообщений: 1
22.05.2016, 01:26     Как очистить консоль , без мигания #4
Нашел информацию, может кому пригодится.
Вставь функцию
Код
C++
1
2
3
4
5
6
7
void setcur(int x, int y)//установка курсора на позицию  x y 
{ 
COORD coord; 
coord.X = x; 
coord.Y = y; 
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); 
};
И вместо system("cls") пиши setcur(0,0). Будет получше.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
22.05.2016, 01:42     Как очистить консоль , без мигания #5
Цитата Сообщение от Maskit Посмотреть сообщение
И вместо system("cls") пиши setcur(0,0). Будет получше.
Плохой вариант.
Стандартным решением будет просто использовать двойную буферизацию для консоли.
По ссылке выше есть все необходимые функции.
Yandex
Объявления
22.05.2016, 01:42     Как очистить консоль , без мигания
Ответ Создать тему
Опции темы

Текущее время: 02:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru