2017-12-28 43 views
1

stdscr에 두 개의 창을 나란히 인쇄하는 프로그램을 만들려고합니다. 나는 한 곳에서 전체 화면에 대한 모든 것을 선언하기 위해 'menu'클래스를 만들었고, main에서 'menu'객체 ('menu_principal')를 만들지 만 아무 일도 일어나지 않습니다. 내 객체가 만들어지고 있는지 확인하기 위해 두 개의 함수를 추가했습니다.내 윈도우가 표시되지 않는 이유는 무엇입니까? (Ncurses)

왜 창이 표시되지 않습니까?

class menu{ 
public: 
    menu(int row, int col){ 

    display = newwin((row-4), (col/2), 2, 0); 
    getmaxyx(display, drow, dcol); 

    help = newwin((row-4), (col/2), 2, (col/2)); 
    getmaxyx(help, hrow, hcol); 

    refresh(); 

    box(display, 0, 0); 
    wrefresh(display); 

    box(help, 0,0); 
    wrefresh(help); 
    refresh(); 
    } 

    int prueba1(){ 
    return (this->drow); 
    } 
    int prueba2(){ 
    return (this->hrow); 
    } 
private: 
    int y, x, drow, dcol, hrow, hcol; 
    WINDOW * display; 
    WINDOW * help; 



}; 

다음은 주요의 일부 : 여기

클래스 '메뉴'입니다

int main(int argc, char const *argv[]) { 
    int row=0, col=0; 
    initscr(); 
    refresh(); 
    cbreak(); 
    getmaxyx(stdscr, row, col); 

    menu* menu_principal = new menu(row, col); 
    refresh(); 

    cout << row; 
    cout << menu_principal->prueba1(); 
    cout << menu_principal->prueba2(); 

답변

0

평원 refresh() 호출이 덮어 쓰는 창 - 특정 wrefresh(display)wrefresh(help). 샘플이 완성되면, 누군가이 작업을 수행하는 특정 코드 행을 지적 할 수 있습니다.

(cout 호출은별로 도움이되지 않습니다. 정보는 화면이 아닌 파일에 써야합니다.)

+0

감사합니다. refresh() 호출을 더 나은 곳으로 옮겼지만 문제가 아닙니다. 내가 "int c = getch()"문을 추가하고 그것을 해결하기 전에 내가 닫히기 전에 기다리는 프로그램을 지시하지 않았다는 것을 깨달았다. 꽤 noobish 실수. –