Frage

Ich erstelle ein Programm, das einige Informationen in ncurses anzeigt und dann vim öffnet (mit system), um dem Benutzer das Bearbeiten einer Datei zu ermöglichen.Nachdem vim beendet wurde, wird der Ncurses-Bildschirm jedoch nicht neu gezeichnet. refresh Und wrefresh nichts tun, was dazu führt, dass meine schöne Speisekarte komplett zerstört wird.

Also werde ich zur Befehlszeile zurückgeschickt.Die Menüelemente werden neu dargestellt, wenn ich zu ihnen gehe.Wenn man sich ein wenig bewegt, erhält man etwas, das so aussieht:

Tragedy

Wie Sie sehen können, befinde ich mich nicht mehr in meiner hübschen Ncurses-Umgebung.

Ich könnte ncurses komplett abreißen und alles neu einrichten, aber dann bleiben einige Dinge (wie die Menüposition) nicht erhalten.

Wie mache ich das richtig?Gibt es eine bessere Möglichkeit, ein externes Programm aufzurufen und ordnungsgemäß hierher zurückzukehren?

War es hilfreich?

Lösung

Ich musste Flüche noch nie ganz neu starten.

Was ist, wenn Sie so etwas tun?

def_prog_mode() Dannendwin()

Systemaufruf ausführen

undfresh() sollte es wiederherstellen

Andere Tipps

Trennen Sie Ihren Programmstatus vom Fluchstatus.

Der einzig saubere Weg, den ich kenne, besteht darin, Flüche vollständig zu stoppen und wieder neu zu starten.Wenn Ihr Programm eine klare Vorstellung von seinem internen Zustand hat (wie es sollte), sollte es einfach sein, zur gleichen Position zurückzukehren.

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top