我有我的窗口
WINDOW *win = newwin(40, 40, 3, 3);
当输入一些文本并且跨越更多行时,保持窗口内边框周围整齐空白的最佳方法是什么?我似乎找不到在NCurses中赋予窗口这种属性的方法。
我想一个方法来做填充是在这个里面创建另一个窗口。一定有更干净的方法
William McBrine对此深信不疑。将框保留在窗口周围的最简单方法是在围绕它的窗口中创建框。那是因为
- 对内框的更改对 框没有影响
- 有一个函数
box
,它沿着给定窗口的边缘绘制一个框。
几个护士测试程序使用这个功能。例如,主测试程序(在ncurses.c
中)中的一个菜单项响应 w
,通过创建一个窗口来容纳框,然后创建一个窗口来容纳其内容,并在前者中绘制一个框,然后继续接受新的内部框中的输入:
} else if (c == 'w') {
int high = getmaxy(win) - 1 - first_y + 1;
int wide = getmaxx(win) - first_x;
int old_y, old_x;
int new_y = first_y + getbegy(win);
int new_x = first_x + getbegx(win);
getyx(win, old_y, old_x);
if (high > 2 && wide > 2) {
WINDOW *wb = newwin(high, wide, new_y, new_x);
WINDOW *wi = newwin(high - 2, wide - 2, new_y + 1, new_x + 1);
box(wb, 0, 0);
wrefresh(wb);
wmove(wi, 0, 0);
remember_boxes(level, wi, wb);
wgetch_test(level + 1, wi, delay);
delwin(wi);
delwin(wb);
wgetch_help(win, flags);
wmove(win, old_y, old_x);
touchwin(win);
wrefresh(win);
doupdate();
}