|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.10.2014, 16:53 | #1 |
Пользователь
Регистрация: 25.08.2014
Сообщений: 87
|
Позиция текста в консоли
Привет, подскажите как можно сделать облегченное указание позиции вывода текста в консоле. На данный момент пользуюсь SetConsoleCursorPosition и постоянно перед выводом текста в нужное мне место приходится указывать координаты вывода cd_12.X = 31; cd_12.Y = 12;
В этом вся проблема, что я часто какую то строку должен убрать и тогда у меня посреди всего выведенного текста есть пустая строка и мне ее нужно как то убрать, а переписывать все позиции чтобы другие строки заняли это место постоянно надоедает. Можно ли как то воспользоваться другим вариантом вывода строк? Например чтобы оно само выводило каждую строку (при этом будет пропускать закомментированые те, что мне нужно временно убрать) не оставляя за собой пустой строки? подскажите.. |
28.10.2014, 17:02 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Нет. Так не получится.
I'm learning to live...
|
28.10.2014, 17:34 | #3 |
Пользователь
Регистрация: 25.08.2014
Сообщений: 87
|
|
28.10.2014, 22:47 | #4 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
нефига не понял вопроса...
|
28.10.2014, 23:10 | #5 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
давай скриншоты с пояснениями прямо на них. иначе хренпоймичо.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
29.10.2014, 00:14 | #6 |
Пользователь
Регистрация: 25.08.2014
Сообщений: 87
|
Строки на консоль вывожу так:
Код:
Код:
Как можно обойтись без указания положения текста? Чтобы нужный текст постоянно отображался по середине консоли и не имел пустых строк если я вдруг уберу какую нибудь из них. Последний раз редактировалось Mik92; 29.10.2014 в 00:21. |
29.10.2014, 00:16 | #7 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Вы можете автоматизировать рутину.
Например, когда то очень давно, когда я ещё только только изучал плюсы, я сделал обертку для консоли имеющую такой дизайн: Код:
CENTER указывает, что каждая строка должна выравниваться по центру. Или можно например указать позицию явно: Код:
но при этом умеет дополнительный функционал. Я наделил свой механизм разным функционалом, вплоть до того, что можно было делать реакцию на клавиши, и на мышку, перетаскивать блок текста мышкой, выводить картинки. А по сути, это просто обертка над winapi. Резюмируя: как программист, вам следует подумать о том, как автоматизировать рутину, и обеспечить себя удобными инструментами для своей разработки. Последний раз редактировалось _Bers; 29.10.2014 в 00:26. |
29.10.2014, 00:21 | #8 | |
Пользователь
Регистрация: 25.08.2014
Сообщений: 87
|
Убираю сам код вывода определенной строки
Цитата:
for (int no = 0; no < NO; no++) Брать все выводимые строки и выводить их по одной при этом добавляя к позиции Y, +1. Но как, не понимаю либо я не правильно это все себе представляю но знаю, что это сделать как то можно Последний раз редактировалось Stilet; 29.10.2014 в 07:34. |
|
29.10.2014, 01:00 | #9 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
при помощи winapi я запрашивал два экранных буфера. один из них делал активным. и он был виден на экране. а второй - задний, не видимый. Кроме этого я держал в памяти массив строк. Получилась матрица, где ширина - это количество символов, которое может влезть в экран консоли. А высота - это количество строк, которое может влезть в консоль. (на самом деле я хранил не просто символ, а ещё и его цвет) ну так вот, когда мне было нужно вывести на экран строку, я на самом деле вносил данные о ней вот в этот вот свой массив. после этого выводил весь цветной текст уже в задний экран консоли. и уже после этого использовал специальную функцию winapi, которая делала задний экран передним (активным), а тот, который был передним - задним (не активным) таким образом, все что я напечатал в заднем буфере мгновенно становилось видно в консольке. Таким образом, я например организовал в косольке вывод анимации: Код:
Трюк с двумя экранами называется "двойная буферизация". Сама идея стара, как мир. Смысл её в том, что бы при изменении содержимого экрана, не было раздражающего мерцания. Тогда анимация получается красивой и плавной. Но если анимация не нужна, то можно печатать сразу в активный буфер суть же идеи в том, что бы печатать в свой собственный массив данных, который полностью подчиняется вашей логике. Поэтому, вы сможете делать с ним все, что захотите. И только в момент подтверждения изменений целиком копируете данные на экран. |
|
29.10.2014, 01:26 | #10 | |
Пользователь
Регистрация: 25.08.2014
Сообщений: 87
|
Цитата:
Я попробую еще что нибудь, может что надумаю. Спасибо за идеи |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение цвета текста и фона в консоли. C. | Ragers | Помощь студентам | 0 | 23.02.2013 18:00 |
Ввод текста в консоли | Armind | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 11.12.2011 12:06 |
Форматирование текста в консоли | Alexsandr | Общие вопросы C/C++ | 0 | 07.12.2011 12:48 |
изменение цвета выведенного текста в консоли с++ | BleStaR | Общие вопросы C/C++ | 1 | 27.10.2010 08:57 |
Позиция текста по отношению к картинке в блоке <div>, CSS | FINoM | HTML и CSS | 3 | 11.06.2009 16:31 |