2011-04-21 3 views
9

저주 창 내부에 무언가를 쓰려고하는데 경계선에도 쓰는 것 같습니다. 아래 코드를 수정하려면 어떻게해야합니까?테두리가 아닌 창 안쪽에 인쇄하기

커스에서
win_self = newwin(LINES/2, COLS, 0, 0); 
box(win_self, 0, 0); 
wrefresh(win_self); 
wprintw(win_self, "foobar"); 

답변

11

, box() 의해 생성 테두리 내부 테두리이다. 내가 말할 수있는 한, 단순히 "내 경계를 덮어 쓰지 마라"라고 말할 수있는 방법이 없습니다. 다음, 당신이 창 내용을 그릴

  • 경계 문자를 덮어 쓰지
  • 이 상자를 그립니다 (move() 사용) :

    는 그럼에도 불구하고, 내가 지금 생각할 수있는 세 가지 솔루션이 있습니다 refresh() 화면 (여전히 덮어 쓰고 있지만 적어도 테두리 문자가 아님)

  • 경계선이있는 "테두리 창"을 만들고 그 안에 "content window"를 만듭니다. 물론이 테두리는 (border_window_start_y + 1, border_wind box() 기능은이 "이 창을 볼 국경이있다"속성을 추가하지 않습니다 : ow_start_x + 1)은 "국경 창"


그냥 좀 더 명확하게하는 것보다 두 행/열 작 창에서 테두리 문자를 인쇄합니다.

당신은 다음과 같습니다

  • 당신이 그 (것)들을 덮어
+1

나는 임시 해킹으로 세 번째 솔루션을 선택했습니다. 이제는 해킹이 '생산 코드'인 것 같습니다. – Alexandru

+1

네, 최선의 해결책이라고 생각합니다. – Philip

+1

세 번째 것은 실제로 좋은 아이디어이며 구현했습니다. 하지만 지금은 여러 겹치는 창과 패널에 문제가 있습니다. 나는 바깥 쪽 테두리를 패널에 할당하지만, 내가 닫을 때 (숨기기) 아래의 다른 윈도우는 아래 패널에 할당되지 않은 윈도우에 대해 새로 고쳐지지 않습니다.이 문제도 해결할 수 있습니까? 아마 추가 패널일까요? – aurora

0

내가 가장 쉬운 방법은 만드는 것입니다라고 말하고 싶지만하지 않을 경우

  • 는 신중해야하는데 그 경계 문자를 덮어 무료 창 안쪽에있는 창은 해당 창에서 경계를 표시하고 인쇄합니다.

    win_self = newwin(LINES/2, COLS, 0, 0); 
    box(win_self, 0, 0); 
    derwin_self = derwin(win_self, LINES/2 - 2, COLS - 2, 0, 0); 
    wprintw(derwin_self, "foobar"); 
    
  • 관련 문제