2010-07-15 5 views
5

Я делаю программу, которая отображает некоторую информацию в ncurses, а затем открывает vim (используя system), чтобы разрешить пользователю редактировать файл. Однако после выхода vim экран ncurses не будет перерисовываться. refresh и wrefresh ничего не делают, что приводит к полному разрушению моего прекрасного меню.C - переход от ncurses ui к внешней программе и обратно

Итак, я возвращаюсь обратно в командную строку. Элементы меню перерисовываются, когда я перехожу к ним. Перемещение вокруг немного результатов в чем-то, что выглядит следующим образом:

Tragedy

Как вы можете видеть, что я больше не нахожусь в моей красивой среде Ncurses ,.

Я мог полностью снести ncurses и снова установить вещи, но затем некоторые вещи (например, положение меню) не сохранились.

Как это сделать правильно? Есть ли лучший способ вызвать некоторую внешнюю программу и вернуться сюда изящно?

ответ

1

Мне никогда не приходилось полностью перезапускать проклятия.

, что если вы делаете что-то вроде

def_prog_mode() затем endwin()

выполнить системный вызов

и обновить() должен восстановить его

+0

Спасибо! Кажется, это работает, но время от времени я возвращаюсь к своему пользовательскому интерфейсу curses, и ни один из моих ключей не регистрируется. Поэтому я должен убить программу. Есть идеи? –

+0

как вы начинаете ncurses? initscr();/* инициализировать библиотеку curses */ клавиатура (stdscr, TRUE);/* включить отображение клавиатуры */ nonl();/* сказать проклятиям не делать NL-> CR/NL на выходе */ cbreak();/* принимать входные символы по одному, не ждать \ n */ noecho();/* не echo input */ Что-то меняет метод ввода? вы можете вызвать cbreak(), когда вы вернетесь – Tree77

+0

Я делаю все выше, до сих пор не повезло. –

0

Отделите свое состояние программы от состояния проклятия.

Единственный чистый способ, о котором я знаю, - это полностью остановить и возобновить проклятия. Если ваша программа имеет чистое представление о своем внутреннем состоянии (как это должно быть), тогда должно быть легко вернуться в ту же позицию.

Удачи вам!

 Смежные вопросы

  • Нет связанных вопросов^_^