Как нарисовать для определенной части консоли / терминала?

0

Мне любопытно узнать, как вы можете нарисовать/обновить определенный регион терминала/консоли. Есть ли для этого кросс-платформенные библиотеки?

Причина, по которой я хочу знать, заключается в том, что я разрабатываю приложение командной строки мгновенного сообщения, и мне было любопытно узнать, как я могу обновить средство просмотра сообщений (куда все сообщения идут) отдельно, где вы пишете команды/текст для других людей в чат. Очевидно, если бы я просто попытался получить вход и записать в cout, то вход, который вводит пользователь, и сообщения будут "помешаны" (вмешательством я имею в виду разбиение на несколько строк).

Я думал об использовании двух объектов потока: один для сохранения представления (сообщений/вывода с сервера) и один для хранения ввода от пользователя и просто перерисовывать по мере необходимости. Однако это кажется неэффективным, и мне требуется очистить экран (в этом случае я не знаю, как эффективно очищать экран и кросс-платформенно).

Я также думал о просто переключении на Qt/wxWidgets, поскольку это могло бы упростить создание графического интерфейса.

Теги:
terminal
command-line-interface
cross-platform

2 ответа

2
Лучший ответ

Используйте библиотеку ncurses для записи текстовых пользовательских интерфейсов независимым от терминала образом.

2

Как предложил @Naruto, ncurses - хороший способ пойти. На гораздо более базовом уровне вы также можете просто использовать escape-коды ANSI для перемещения курсора по экрану:

Например, чтобы поместить курсор в строку 5, столбец 23, вы можете ввести это

echo -n "\033[5;23H"

Есть несколько примеров здесь.

  • 0
    Я полагаю, что использование escape-кодов ANSI будет намного сложнее, чем использование ncurses.
  • 0
    Это во многом зависит от того, что вы хотите. Если вы просто хотите разместить дату и время в верхней части экрана и три или четыре других элемента информации, используйте коды ANSI. Если вам нужна прокрутка окон и сложное управление экранами, ncurses лучше - хотя я думаю, вы найдете ncurses с довольно крутой кривой обучения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню