Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Riderik
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
#1

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

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

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

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

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов),...

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

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания...

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

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

На счёт консоли сомневаюсь чтобы там было возможным создание множественного курсора(можно лишь управлять его позицией как это сделать показано здесь
http://www.cyberforum.ru/cpp-beginners/thread350940.html#post1980999)
1
Миниатюры
Дополнительная "каретка" консоли  
Вложения
Тип файла: rar mtread.exe.rar (37.0 Кб, 5 просмотров)
Riderik
28 / 28 / 4
Регистрация: 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
Привет! Вот еще темы с решениями:

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

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

Базовый класс "Изделие" и производные классы "Мышь", "Клавиатура", "Монитор"
/*Создать класс изделие, с полями себестоимость, цена, время выполнения,...

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


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

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

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