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

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

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

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

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

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

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

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

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

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

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

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

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....

Реализовать структуру "Анкета" с полями "Фамилия", "Пол" и "Адрес" - C++
Здравствуйте. Проходим тему Структуры, не могу понять, как определить количество, само задание: #include &lt;iostream&gt; #include...

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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