Для создания окна используется функция\
``WINDOW *newwin(int nlines, int ncols, int begin_y, int begin_x);``
Для создания дочерних окон используются функции\
``WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x);``\
``WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x);``\
В ``subwin`` указываются абсолютные координаты ``begin_y``, ``begin_x``, а в ``derwin`` - относительно позиции базового окна.
Для удаления окна нужно вызвать ``delwin``, удалив пред этим все дочерние окна:\
`` int delwin(WINDOW *win);``
Окно можно выделить рамкой с помощью функции\
``int box(WINDOW *win, chtype verch, chtype horch);``
В качестве 2 последних аргументов можно указать символы для вертикальных и горизонтальных линий или 0,0 для рамки по умолчанию.
Функция ``mvwin`` перемещает окно:\
``int mvwin(WINDOW *win, int y, int x);``
Для обновления окна используется функция\
``wrefresh(WINDOW *win);``\
также функция перемещает физический курсор в позицию логического курсора этого окна. Чтобы физический курсор остался на месте, нужно вызвать функцию ``leaveok`` с аргументом TRUE перед обновлением\
``void leaveok(WINDOW *win, bool flag);``
Перемещение курсора в окне выполняется функцией\
``int wmove(WINDOW *win, int y, int x);``
Для получения информации об окне используются макросы\
``void getbegyx(WINDOW *win,int y, int x);`` -- абсолютные координаты окна\
``void getmaxyx(WINDOW *win, int y, int x);`` -- размеры окна\
``void getparyx(WINDOW *win, int y, int x);`` -- относительные координаты дочернего окна\
``void getyx(WINDOW *win, int y, int x);`` -- позиция логического курсора в окне