我有一个非常简单的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 回答
应该从xsize而不是ysize计算startpos吗?