Zle wykonywanie funkcji z biblioteki.

0

Witam, oto funkcja main:

int main(void){
  WINDOW *my_win;
  int row,col,startx,starty,height,width;
  char ch;

  initscr();
  clear();
  noecho();
  curs_set(0);
  cbreak();
  keypad(stdscr,true);
  getmaxyx(stdscr,row,col);

  if(has_colors()==FALSE){
    endwin();
    printf("Your terminal does not support color\n");
    exit(1);
  }
  start_color();
  init_pair(1,COLOR_GREEN,COLOR_WHITE);
  
  height=row-10;
  width=col-50;
  starty=(LINES-height)/2;
  startx=(COLS-width)/2;
  menu(row,col);
  my_win=create_newwin(height,width,starty,startx);
  refresh();
  

  endwin();
  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);
  wborder(local_win,'|','|','-','-','+','+','+','+');
  wrefresh(local_win);
  
  return local_win;
}

a to jest funkcja menu z biblioteki ktora dodaje do glownego pliku.

int menu(int row,int col){
  ITEM **my_items;
  ITEM *cur_item;
  MENU *my_menu;
  int n_choices;
  char choice;

  keypad(stdscr, TRUE);
  
  n_choices=ARRAY_SIZE(choices);
  my_items=(ITEM **)calloc(n_choices+1,sizeof(ITEM *));
  
  for(int i=0;i<n_choices;++i)
    my_items[i] = new_item(choices[i], choices[i]);

  my_menu=new_menu((ITEM **)my_items);
  post_menu(my_menu);
  refresh();
  mvprintw(LINES-3,0,"Use p/n to move up/down");
  
  while((choice=getch())!='q'){
    switch(choice){
    case P:
      menu_driver(my_menu,REQ_UP_ITEM);
      break;
    case N:
      menu_driver(my_menu,REQ_DOWN_ITEM);
      break;
    }
  }
  
  for(int i=0;i<n_choices;++i)
    free_item(my_items[i]);
  free_menu(my_menu);
  return 0;
}

I widac w funkcji main ze po wykonaniu funkcji menu program powinien przeskoczyc do funkcji create_newwin prawda ? Tylko ze gdy w menu wybieram 'q' to program sie zamyka i nie wyswietla okna ktore miala stworzyc funkcja create_newwin, dlaczego nie przechodzi do tej funkcji ?

0

A czy czasami nie tworzy okna i zaraz go nie niszczy? - bo tak wygląda na załaczonym kodzie....

0

oo masz xd Faktycznie, tylko urxvt mi tego nie pokazal ale np w terminalu emacsowym juz widze ze okno zostalo stworzone, tak potem jest niszczone, nie ogarnalem tego, dzieki : )

1 użytkowników online, w tym zalogowanych: 0, gości: 1