Не уверен, что это возможно даже при ncurses. Вся документация и примеры показывают, что создание множества окон известно во время компиляции. Я хотел бы сделать что-то вроде этого.Создание динамического окна во время выполнения с использованием ncurses
#include <ncurses.h>
WINDOW *create_newwin(int height, int width, int starty, int startx);
void star(int x,int y,int r);
void newbox(int x,int y,int r);
int main(int argc, char *argv[])
{
int startx, starty, width, height;
int ch,sze;
initscr(); /* Start curses mode */
cbreak(); /* Line buffering disabled, Pass on
* everty thing to me */
//printf("%s\n",argv[1]);
sze = atoi(argv[1]);
starty = (LINES - sze)/2; /* Calculating for a center placement */
startx = (COLS - sze)/2; /* of the window */
refresh();
star(startx,starty,sze);
endwin(); /* End curses mode */
return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
{ WINDOW *local_win;
local_win = newwin(height, width, starty, startx);
box(local_win, 0 , 0); /* 0, 0 gives default characters
* for the vertical and horizontal
* lines */
wrefresh(local_win); /* Show that box */
return local_win;
}
void star(int x,int y,int r)
{
if(r>0)
{
star(x-r,y+r,r/2);
star(x+r,y+r,r/2);
star(x-r,y-r,r/2);
star(x+r,y-r,r/2);
newbox(x,y,r);
}
}
void newbox(int x,int y,int r)
{
WINDOW *mywin;
mywin = create_newwin(2*r, 2*r, y, x);
}
Я думаю, что вы бы использовали новое ключевое слово и malloc. Моя желаемая цель - создать тип фрактального дисплея с перекрывающимися окнами. Функциональная звезда является рекурсивной, которая создаст параметры для перехода к функции newbox. Кто-нибудь там использовал ncurses для создания окон во время выполнения?
Это именно то, что я ищу. Спасибо за быстрый ответ – vbmrupp
Еще один вопрос. Я попытался использовать run: «make -f Makfile.in», но он дал ошибку «Makefile.in:40: *** missing separator. Stop.» Любые предложения? – vbmrupp
Вы должны использовать скрипт 'configure' для создания соответствующего' Makefile', например, '' ./configure && make' ' –