【问题标题】:Creating partly offscreen ncurses window创建部分屏幕外的 ncurses 窗口
【发布时间】:2019-01-29 19:14:03
【问题描述】:

我有兴趣在终端中创建部分可见的 ncurses 窗口。当我使新的 ncurses 窗口与右侧或底部终端窗口边框相交时,它会正确显示。例如。工作代码:

newwin(15, 12, LINES - 7, COLS - 6);

但是当我尝试使 ncurses 窗口与终端的左/上边框相交时,什么也没有发生(ncurses 窗口未绘制)。完整的不工作的代码:

#include <ncurses.h>

int main()
{
    initscr();
    cbreak();
    refresh();

    WINDOW* ncursesWindow = newwin(15, 12, -7, -6);
    wborder(ncursesWindow, '*', '*', '*', '*', '*', '*', '*', '*');
    wrefresh(ncursesWindow);

    int command = getch();

    endwin();
    return 0;
}

问题是如何使最后一个代码示例工作。

【问题讨论】:

    标签: c++ windows ncurses


    【解决方案1】:

    这会使窗口在屏幕外启动。 manual page for newwin(见source code)和相关功能说

    X/Open 没有定义错误条件。在这个实现中

    newwin
    如果任何一个起始纵坐标为负数,或者行数或列数为负数,则会失败。

    虽然 X/Open “没有定义错误条件”,但这是大多数其他实现的行为方式(检查 Solaris SVr4 curses、NetBSD)。 PDCurses 似乎允许它。 Solaris xpg4 curses 做了一些奇怪的事情,但要看到你必须阅读source code

    【讨论】:

    • 我用完整的代码示例编辑了问题。我用边框填充了窗口,但在第二个示例窗口中没有显示。
    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多