5

ncurses に情報を表示し、vim を開いて (を使用してsystem) ユーザーがファイルを編集できるようにするプログラムを作成しています。ただし、vim が終了すると、ncurses の画面は再描画されません。 何もしないと、美しいメニューが完全に破棄されますrefreshwrefresh

そのため、コマンドラインに送り返されます。メニュー項目に移動すると、メニュー項目が再描画されます。少し移動すると、次のようになります。

悲劇

ご覧のとおり、私はもうきれいな ncurses 環境ではありません。

ncurses を完全に破棄して再度設定することはできますが、(メニュー位置などの) いくつかのものは保持されません。

これを正しく行うにはどうすればよいですか?外部プログラムを呼び出して、ここに優雅に戻るより良い方法はありますか?

4

2 に答える 2

1

curses を完全に再起動する必要はありませんでした。

次のようなことをするとどうなりますか

def_prog_mode()から endwin()

システムコールを実行

そして refresh() はそれを復元する必要があります

于 2010-07-15T17:30:59.050 に答える
0

プログラムの状態を curses の状態から分離します。

私が知っている唯一のクリーンな方法は、curses を完全に停止して再開することです。あなたのプログラムがその内部状態の明確な概念を持っている場合 (そうあるべきです)、同じ位置に簡単に戻ることができます。

幸運を!

于 2010-07-15T17:25:24.910 に答える