我有一个非常简单的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) - 都有相同的问题,所以它必须在这段代码中。
我将不胜感激任何建议。这是事先。
答案 0 :(得分:0)
应该从xsize而不是ysize计算startpos吗?
int startpos = (xsize - (int)title.size()) / 2;