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

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

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

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

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

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

Узнать номер командной строки на которой находится "каретка" - C++
Есть ли такая функция в недрах стандартных библиотек, чтобы узнать номер консольной строки, на которой в данный момент находится "каретка"...

Создание меню в консоли для работы с классом "Дробь" - C++
очень нужна помощь,как надо описать сложение вычитание умножение и деление дробей в меню ,хотя бы один пункт остальные по примеру сделаю ...

Нужна рабочая программа "Ханойская башня" в консоли - C++
Нужна рабочая программа "Ханойская башня" в консоле: Вводишь количество колец, и выводит все ходы перемещения колец. Если таковой...

Вылетает "Вызвал срабатывание точки останова" после закрытия консоли - C++
Есть такая задача: нужно вводить массив, пока не введешь число,отличающейся знаком, относительно первого элемента(с этой задачей я...

" *.exe вызвал срабатывание точки останова " при закрытии консоли - C++
Здравствуйте, уважаемые. Есть задание: Сделать "гибкий" массив на основе возрастающего динамического массива(то есть, все элементы в...

Реализация UNIX команды "cat" в консоли Windows с использованием WinAPI - C++
В консоли Linux есть команда "cat", аналог которой надо сделать под консоль Windows на языке C++. Требуется реализация посредством WinAPI....

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

На счёт консоли сомневаюсь чтобы там было возможным создание множественного курсора(можно лишь управлять его позицией как это сделать показано здесь
Форматирование текста и изменение цвета текста в консоли)
Миниатюры
Дополнительная "каретка" консоли  
Вложения
Тип файла: rar mtread.exe.rar (37.0 Кб, 5 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2012, 17:22     Дополнительная "каретка" консоли
Еще ссылки по теме:

Как запретить ввод слова "con" в консоли Visual Studio 2012 - C++
Всем добра! Написал программу для работы с символами, но есть одна проблема, что при вводе слова "con" программа ломается. Как запретить...

Реализация команды "cat" в консоли Windows - C++
В общем задание следующее: В консоли Linux есть команда "cat", аналог которой надо сделать под консоль Windows на языке C++. В идеале...

Неправильное отображение русского текста в консоли при использовании setlocale(LC_ALL, "Russian") - C++
Ребят, такая ситуация, прописал setlocale(LC_ALL, "Russian");но в консоли вместо текста на русском-набор букв, в чем может быть...

Что такое "писать в консоли"? - C++
извините за (может быть тупой) вопросс. что такое "писать в консоли"?


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

Или воспользуйтесь поиском по форуму:
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     Дополнительная "каретка" консоли
Ответ Создать тему
Опции темы

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