C - Переход от NCURSES UI к внешней программе и обратно
-
16-09-2020 - |
Вопрос
Я делаю программу, которая отображает некоторую информацию в NCurses, а затем открывает VIM (используя system
), чтобы позволить пользователю редактировать файл.После того, как VIM выходит, хотя экран NCurses не будет перерисован.refresh
и wrefresh
не делают ничего, что привело к полному разбиванию моего прекрасного меню.
Итак, я отправляюсь обратно в командную строку.Пункты меню перерисовываются, когда я переезжаю к ним.Двигаясь немного приводит к тому, что выглядит так:
Как вы можете видеть, я больше не нахожусь в своей симпатичной среде Ncurses.
Я мог полностью разбросить NCurses и снова настроить вещи, но тогда некоторые вещи (например, положение меню) не сохраняется.
Как мне это сделать правильно?Есть ли лучший способ назвать некоторую внешнюю программу и возвращаться здесь изящно?
Решение
Мне никогда не приходилось полностью перезапустить проклятия.
Что, если вы сделаете что-то вроде
def_prog_mode () затем endwin ()
Выполнить системный вызов
и обновление () должно восстановить его
Другие советы
Отделите состояние программы из состояния проклятия.
единственный чистый способ, которым я знаю, - это полностью остановить и перезапустить проклятия.Если ваша программа имеет чистое понятие его внутреннего состояния (как оно должно быть), то его следует легко вернуться к той же позиции.
Удачи!