2010-07-15 2 views
5

ncurses에 정보를 표시하는 프로그램을 만들고 사용자가 파일을 편집 할 수 있도록 vim (system 사용)을 엽니 다. vim이 종료 된 후에는 ncurses 화면이 다시 그려지지 않습니다. refreshwrefresh은 아무 것도하지 않아 내 아름다운 메뉴가 완전히 삭제됩니다.C - ncurses UI에서 외부 프로그램으로 돌아 가기

그래서 다시 명령 줄로 보내집니다. 메뉴 항목을 이동할 때 메뉴 항목이 다시 그려집니다. 뭔가 비트 결과를 중심으로 이동하면 다음과 같다 그 : 당신이 볼 수 있듯이

Tragedy

, 나는 더 이상 내 꽤 ncurses를 환경에서 생각하지 ,.

나는 ncurses를 완전히 찢어 버리고 물건을 다시 설치할 수 있지만 메뉴 위치와 같은 일부 물건은 보존되지 않습니다.

어떻게 올바르게 수행 할 수 있습니까? 외부 프로그램을 호출하고 정상적으로 여기에 돌아 오는 더 좋은 방법이 있습니까?

답변

1

전적으로 저주를 완전히 다시 시작해야했습니다. 당신이 다음

def_prog_mode() 같은 것을 할 경우 endwin()

을 시스템 호출을 실행하고 새로 고침 무엇

는()가

+0

감사 복원해야합니다! 이것은 작동하는 것처럼 보입니다 만, 지금은 저의 curses UI로 돌아가서 키 누를 등록하지 않습니다. 그래서 나는 그 프로그램을 죽여야한다. 어떤 아이디어? –

+0

어떻게 초기화합니까? initscr();/* curses 라이브러리 초기화 */ 키패드 (stdscr, TRUE);/* 키보드 매핑 사용 가능 */ nonl();/* 출력에 NL-> CR/NL을하지 않도록 curses에 지시 */ cbreak();/* 한 번에 하나씩 입력 문자를받습니다. \ n */ noecho();/* 입력을 에코하지 마십시오 */ 입력 방법이 변경 되었습니까? 당신이 돌아올 때 당신은 cbreak()를 호출 할 수 있습니다. – Tree77

+0

나는 위의 모든 것을하고 있습니다, 불행히도 운이 없습니다. –

0

프로그램 상태를 curses 상태와 구분하십시오.

내가 알고있는 유일한 깨끗한 방법은 curses를 완전히 멈추고 다시 시작하는 것입니다. 프로그램이 내부 상태에 대한 깨끗한 개념을 가지고 있다면 (같은 방식으로), 같은 위치로 돌아 가기 쉽습니다.

행운을 빈다.