2017-12-28 28 views
1

私はこのプログラムを作成しようとしています。ここでは、stdscrに2つのウィンドウを並べて表示します。私はクラス 'メニュー'を作成して、スクリーン全体についてのすべてを1か所で宣言し、メインメニューに 'menu'オブジェクト( 'menu_principal')を作成しますが、何も起こりません。オブジェクトが作成されているかどうかを確認するために2つの関数を追加しました。なぜ私のウィンドウは表示されませんか? (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()"ステートメントを追加して解決したことに気付きました。かなりノービッシュミス。 –

関連する問題