2010-07-15 5 views
5

Estoy haciendo un programa que muestra información en ncurses, y luego abre vim (usando system) para permitir al usuario editar un archivo. Sin embargo, después de salir de vim, la pantalla de ncurses no se volverá a dibujar. refresh y wrefresh no hacen nada, lo que resulta en la completa destrucción de mi hermoso menú.C - pasando de ncurses ui a programa externo y de vuelta

Me devuelven a la línea de comandos. Los elementos del menú vuelven a dibujarse cuando me muevo hacia ellos. Moverse un poco los resultados en algo que se parece a esto:

Tragedy

Como se puede ver, ya no estoy en mi ambiente ncurses bastante ,.

Podría eliminar ncurses por completo y configurar de nuevo, pero algunas cosas (como la posición del menú) no se conserva.

¿Cómo hago esto correctamente? ¿Hay alguna manera mejor de llamar a algún programa externo y regresar aquí con gracia?

Respuesta

1

Nunca he tenido que reiniciar maldiciones por completo.

lo que si haces algo como

def_prog_mode() continuación endwin()

ejecutar la llamada al sistema

y refrescar() debe restaurarla

+0

Gracias! Esto parece funcionar, pero de vez en cuando vuelvo a mi interfaz de usuario de maldiciones y ninguna de mis teclas se registra. Entonces tengo que matar el programa. ¿Algunas ideas? –

+0

¿cómo inicias ncurses? initscr();/* inicializa la biblioteca de curses */ teclado (stdscr, TRUE);/* habilitar asignación de teclado */ nonl();/* le dice a las maldiciones que no hagan NL-> CR/NL en la salida */ cbreak();/* tomar caracteres de entrada de uno en uno, no esperar \ n */ noecho();/* no hace eco en la entrada */ ¿Hay algo cambiando el método de entrada? usted puede llamar a cbreak() cuando regrese – Tree77

+0

Estoy haciendo todo lo anterior, todavía no tengo suerte, lamentablemente. –

0

Separe el estado de su programa del estado de las maldiciones.

La única forma limpia que conozco es detener y reiniciar las maldiciones por completo. Si su programa tiene una noción clara de su estado interno (como debería), entonces debería ser fácil volver a la misma posición.

¡Buena suerte!

Cuestiones relacionadas