Создание частично закадрового окна ncurses - PullRequest
0 голосов
/ 29 января 2019

Я заинтересован в создании частично видимых окон 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 голосов
/ 30 января 2019

Это заставляет окно запускаться вне экрана.Страница руководства для newwin (см. исходный код ) и связанных с ними функций говорит, что

X / Open не определяет условий ошибки.В этой реализации

newwin
завершится ошибкой, если любая из его начальных ординат отрицательна или если число строк или столбцов отрицательно.

Хотя X / Open «не определяет условия ошибки», именно так ведут себя большинство других реализаций (проверка проклятий Solaris SVr4, NetBSD).PDCurses, кажется, позволяет это.Solaris xpg4 curses делает что-то странное, но чтобы увидеть, что вам нужно прочитать исходный код .

...