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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Riderik
 Аватар для Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
#1

Дополнительная "каретка" консоли - C++

19.02.2012, 13:48. Просмотров 832. Ответов 5
Метки нет (Все метки)

Вопрос: возможно ли создать в программе дополнительную консольную каретку для вывода текста? Например чтобы текст выводился одновременно в двух местах?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 13:48     Дополнительная "каретка" консоли
Посмотрите здесь:

Что такое "писать в консоли"? C++
C++ Ошибка при отображении русских шрифтов в консоли: "error LNK2019: ссылка на неразрешенный внешний символ"
C++ Узнать номер командной строки на которой находится "каретка"
Нужна рабочая программа "Ханойская башня" в консоли C++
Создание меню в консоли для работы с классом "Дробь" C++
C++ Вылетает "Вызвал срабатывание точки останова" после закрытия консоли
" *.exe вызвал срабатывание точки останова " при закрытии консоли C++
Работа с цветами в консоли и "пропуск" if C++
C++ Неправильное отображение русского текста в консоли при использовании setlocale(LC_ALL, "Russian")
C++ Реализация команды "cat" в консоли Windows
Реализация UNIX команды "cat" в консоли Windows с использованием WinAPI C++
C++ Почему-то при соответствующих нажатиях клавиш не выдает "Ошибка ввода" и просто закрывает экран консоли

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mayonez
 Аватар для Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
19.02.2012, 14:14     Дополнительная "каретка" консоли #2
можно вывести в одном месте, а потом переместить каретку в другое место и вывести там
Riderik
 Аватар для Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
19.02.2012, 14:18  [ТС]     Дополнительная "каретка" консоли #3
Mayonez, Так и сделал. Но тут многопоточность, то есть нужно одновременно выводить. Для этого я сохранял текущее состояние каретки в каждом потоке и потом ее двигал. Но тут есть одно но: Так как используется одна и та же каретка, то бывает такой случай, что один поток успевает ее передвинуть еще до того, как другой успеет сохранить ее состояние для себя и сохранит уже передвинутое положение. То есть после этого они начнут выводить всё в одно место. Поэтому возник вопрос, а можно ли создать для каждого потока свою каретку, чтобы они так не конфликтовали?
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
19.02.2012, 15:41     Дополнительная "каретка" консоли #4
Riderik, чтобы не было конфликтов, надо использовать мьютексы. Не давать одному потоку что-либо выводить, пока мьютекс, соответствующий выводу, не освобождён другим потоком.
-=ЮрА=-
Заблокирован
Автор FAQ
19.02.2012, 16:17     Дополнительная "каретка" консоли #5
Riderik, многопоточность лучше в API показывать, сделали пару клиентских областей и посредством TextOut выводите в них текст, вот вам приложение показывающее как это может быть

На счёт консоли сомневаюсь чтобы там было возможным создание множественного курсора(можно лишь управлять его позицией как это сделать показано здесь
Форматирование текста и изменение цвета текста в консоли)
Миниатюры
Дополнительная "каретка" консоли  
Вложения
Тип файла: rar mtread.exe.rar (37.0 Кб, 4 просмотров)
Riderik
 Аватар для Riderik
28 / 28 / 1
Регистрация: 24.07.2011
Сообщений: 171
19.02.2012, 17:22  [ТС]     Дополнительная "каретка" консоли #6
Всем спасибо. Реализовал класс "курсор консоли". В нем использовал мьютекс и выводил инфу через объекты класса. Вышло как дополнительная каретка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <class type>
Cursor &Cursor::Out(type out)
{   
    WaitForSingleObject(Mutex,INFINITE);
    pos.X = bi.dwCursorPosition.X;
    pos.Y = bi.dwCursorPosition.Y; 
    SetConsoleCursorPosition(h,pos);
    cout<<out;
    GetConsoleScreenBufferInfo(h, &bi);
    ReleaseMutex(Mutex);
    return *this;
}
Yandex
Объявления
19.02.2012, 17:22     Дополнительная "каретка" консоли
Ответ Создать тему
Опции темы

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