首页 文章

ncurses getmaxx只给出半终端大小

提问于
浏览
0

我有一个非常简单的ncurses应用程序的以下c代码:

ui::MainUI::MainUI(void) : _window(initscr()),
                           xsize(getmaxx(_window)),
                           ysize(getmaxy(_window)),
                           _header(newwin(1, ysize, 0, 0)),
                           interrupted(false) {
    curs_set(0);
    start_color();
}

void ui::MainUI::showMainUI(void) {
    setTitle("title");
    refresh();
    wrefresh(_header);
}

void ui::MainUI::quit(void) {
     endwin();
}

void ui::MainUI::setTitle(std::string title) {
    init_pair(1, 7, 4);
    wbkgd(_header, COLOR_PAIR(1));
    int startpos = (ysize - (int)title.size()) / 2;
    mvwaddstr(_header, 0, startpos, title.c_str());
}

到目前为止它确实有效,除了 Headers 正好是终端宽度的一半 . 我尝试了不同的功能,但不幸的是我无法使其工作 . 我也尝试了不同的shell(zsh,bash和sh) - 都有相同的问题,所以它必须在这段代码中 .
我将不胜感激任何建议 . Thx事先 .

1 回答

  • 0

    应该从xsize而不是ysize计算startpos吗?

    int startpos = (xsize - (int)title.size()) / 2;
    

相关问题