ncurses getmaxx只给出半终端大小

时间:2016-04-26 09:52:17

标签: c++ ncurses

我有一个非常简单的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());
}

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

1 个答案:

答案 0 :(得分:0)

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

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