Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyj±tek dla www.elektroda.pl do Adblock.
Dzięki temu, że ogl±dasz reklamy, wspierasz portal i użytkowników.

C - MENU. Ma kto¶ może? Z obsług± klawiatury?

17 Sty 2007 21:21 768 2
  • Poziom 10  
    Ma moze kto¶ jakie¶ proste napisane w c menu?? z obsług± klawiatury?? z góry dzięki:)
  • Poziom 29  
    A może by¶ tak napisał... Na jak± platformę? :> Bo że nie na PC to chyba jest pewne, ale dokładniej?
  • Poziom 10  
    dokładnie to chodzi mi w linux:) a konkretniej to mam tu takie menu i nie bardzo wiem jak dodać kolejne funkcj.. tzn chciałe bym połaczy¶ swoj program z tym.
    Code:

    #include <stdlib.h>
    #include <stdio.h>
    #include <curses.h>
    // Opcje menu
    #define MENU_NTITLES 3
    const char *menu_titles[]={"Pozycja1", "Pozycja2", "Koniec"};
    // Okna programu



    // Glowna procedura programu
    main() {
       int wybrane_menu = 0, n, znak, koniec_programu = 0;
       initscr();curs_set(0);noecho();   // Rozpoczecie pracy z CURSES

       start_color();         // Proba rozpoczecia pracy z kolorami
       if(has_colors()) {      // Przygotowanie par kolorow
          init_pair(1, color_blue, COLOR_BLUE);
          init_pair(2, COLOR_WHITE, COLOR_GREEN);
       }

       okno = newwin(LINES-1, COLS, 1, 0);
       if(has_colors())   wbkgdset(okno, COLOR_PAIR(1) | A_BOLD);
       werase(okno);      // Wyczyszczenie tla (wypelnienie kolorem)
       box(okno, 0, 0);   // Standardowe ramki
       mvwprintw(okno, 1, 1, "%s", "Przykladowe okno");
       mvwprintw(okno, 2, 1, "%s", "Opcja menu \"Koniec\" konczy program");

       menu = newwin(1, COLS, 0, 0);
       if(has_colors())   wbkgdset(menu, COLOR_PAIR(2) | A_BOLD);
       werase(menu);

       keypad(menu, 1);   // Kody klawiszy kursora   
       odswiez_ekran();   // Odswiezenie calosci zawartosci ekranu

       while(!koniec_programu) {
          for(n=0;n < MENU_NTITLES;n++) {   // Obsluga pozycji menu
             if(wybrane_menu == n)   wattrset(menu, A_REVERSE);
             else   wattrset(menu, A_NORMAL);
             mvwprintw(menu, 0, n*16, "%s", menu_titles[n]);
          }
          znak = wgetch(menu);   // Oczekiwanie na klawisz

          if((znak == KEY_LEFT) && (wybrane_menu>0))
             wybrane_menu--;
          if((znak == KEY_RIGHT) && (wybrane_menu<MENU_NTITLES-1))
             wybrane_menu++;
          if(znak == '\n') {
             mvwprintw(okno, 3, 1, "Wybrano nr %d", wybrane_menu+1);
             if(wybrane_menu == 2)   koniec_programu = 1;
          }
          odswiez_ekran();
       }
       delwin(menu);delwin(okno);endwin();   // Koniec pracy z CURSES
       return(0);   // Koniec programu (bez kodu bledu)
    }