创建部分屏幕外的ncurses窗口

时间:2019-01-29 19:14:03

标签: c++ windows ncurses

我有兴趣在终端中创建部分可见的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;
}

问题是如何使最后的代码示例正常工作。

1 个答案:

答案 0 :(得分:0)

这使窗口在屏幕外启动。 newwin的{​​{3}}(请参阅manual page)和相关功能说

  

X / Open定义无错误条件。在此实现中

     

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

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