开发者

C - going from ncurses ui to external program and back

开发者 https://www.devze.com 2023-01-07 17:22 出处:网络
I\'m making a program that displays some info in ncurses, and then opens vim (using system) to allow the user to edit a file.After vim is exited, though, the ncurses screen won\'t redraw.refresh and w

I'm making a program that displays some info in ncurses, and then opens vim (using system) to allow the user to edit a file. After vim is exited, though, the ncurses screen won't redraw. refresh and wrefresh don't do anything, resulting in the complete trashing of my beautiful menu.

So, I get sent back to the command line. The menu items redraw when I move to them. Moving around a开发者_开发知识库 bit results in something that looks like this:

C - going from ncurses ui to external program and back

As you can see, I no longer am in my pretty ncurses environment,.

I could tear down ncurses completely and set things up again, but then some stuff (like menu position) is not preserved.

How do I do this correctly? Is there a better way to call some external program and return here gracefully?


I've never had to restart curses entirely.

what if you do something like

def_prog_mode() then endwin()

execute system call

and refresh() should restore it


Separate your program state from the curses state.

The only clean way I know of is to stop and restart curses entirely. If your program has a clean notion of its internal state (as it should), then it should be easy to go back to the same position.

Good luck!

0

精彩评论

暂无评论...
验证码 换一张
取 消