如何在NCurses中添加窗口填充?

时间:2014-07-31 18:22:36

标签: ncurses

我有我的窗口

WINDOW *win = newwin(40, 40, 3, 3);

当输入一些文本并且跨越更多行时,保留窗口内边界周围整洁空白的最佳方法是什么?我似乎无法找到一种方法在NCurses给这样一个窗口这样的属性。

我想一种制作填充的方法是在这个内部创建另一个窗口。必须有一个更清洁的方式。

1 个答案:

答案 0 :(得分:1)

William McBrine绝对肯定。在窗口周围保留框的最简单方法是在围绕它的窗口中创建框。那是因为

  • 对内框的更改对框
  • 没有影响
  • 有一个函数box,它沿着给定窗口的边缘绘制一个框。

一些ncurses测试程序使用此功能。例如,主测试程序中的一个菜单条目(在ncurses.cresponds to a 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();
        }