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

Консольная двойная буферирзация - C++

Восстановить пароль Регистрация
 
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
14.11.2013, 22:35     Консольная двойная буферирзация #1
Подскажите как реализовать двойную реализацию в консоли.

Допустим у меня бесконечный цикл

C++
1
2
while(true)
     cout<<"hello";
Если я запущу это приложение, то увижу бесконечное мерцание слова hello. Если бы была двойная буыеризация я бы просто видел слово hello. И его написание скрывалось от моих глаз.


Как это все сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2013, 22:35     Консольная двойная буферирзация
Посмотрите здесь:

C++ Консольная программа
консольная псевдографика C++
C++ консольная утилита
C++ Консольная графика
C++ консольная графика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
14.11.2013, 22:39     Консольная двойная буферирзация #2
посмотрите в сторону библиотеки ncurses
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
14.11.2013, 22:49  [ТС]     Консольная двойная буферирзация #3
Цитата Сообщение от Cra3y Посмотреть сообщение
посмотрите в сторону библиотеки ncurses
А смогу ли я ее использовать исключительно для двойной буферизации, а остальная работа в обычном режиме?
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
14.11.2013, 23:04     Консольная двойная буферирзация #4
Egor138,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <windows.h>
 
HANDLE hstdout;
typedef std::pair< int, int > place;
 
void write(const place &pl, const std::string &symbol) {
    DWORD written;
    COORD p;
    p.X = pl.first;
    p.Y = pl.second;
    SetConsoleCursorPosition(hstdout, p);
    WriteConsole(hstdout, symbol.c_str(), symbol.size(), &written, NULL);
}
 
int main() {
    hstdout = GetStdHandle(STD_OUTPUT_HANDLE); 
    
    while(true)
        write(place(30, 40), "hello");
}
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
14.11.2013, 23:04     Консольная двойная буферирзация #5
ncurses работает независимо от cin и cout
и в основном предназначена для вывода псевдографики и обработки событий в консоли
Вы можете использовать cin,cout но на сколько я знаю, в этом случае внутреннее состояние библиотеки не определено
С помощью данной библиотеки вы можете обеспечить вывод текста в определенное место консоли, чем ползуются такие прогрпммы как midnight comander, но не возможно гарантировать правильность работы cin, cout
Тем самым рекомендуется использовать либо средства библиотеки, либо отказаться от нее
Egor138
 Аватар для Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
15.11.2013, 14:32  [ТС]     Консольная двойная буферирзация #6
coloc, Вроде все работает, но
1) мне нужно чтобы функция выводила текст без задавания координат
2) вместо hello пишет вопросы

А так спасибо за предложение)
Yandex
Объявления
15.11.2013, 14:32     Консольная двойная буферирзация
Ответ Создать тему
Опции темы

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