int Menu::tworz_menu() // menu wyboru glownego menu
{
//start
initscr();
printw("Wcisnij przycisk, aby rozpoczac prace programu...");
noecho();
//rozpoczynamy wyswietlanie menu!
const char txt1[] = "Tekst";
const char txt2[] = "Tekst2";
const char txt3[] = "Tekst3";
const char txt4[] = "Tekst4";
const char txt5[] = "Wyjscie \n\n\n";
int ktory = 1;
int znak;
const short int min_wybor = 1;
const short int max_wybor = 5;
do
{
//pobieranie znaku
znak = getch();
clear();
if (znak == 'a' && ktory != min_wybor)
{
ktory--;
}
else if(znak == 'z' && ktory != max_wybor)
{
ktory++;
}
//wyswietlanie
switch(ktory)
{
case 1:
attron(A_REVERSE);
mvprintw(1,1, txt1);
attroff(A_REVERSE);
mvprintw(2,1, txt2);
mvprintw(3,1, txt3);
mvprintw(4,1, txt4);
mvprintw(5,1, txt5);
break;
case 2:
mvprintw(1,1, txt1);
attron(A_REVERSE);
mvprintw(2,1, txt2);
attroff(A_REVERSE);
mvprintw(3,1, txt3);
mvprintw(4,1, txt4);
mvprintw(5,1, txt5);
break;
case 3:
mvprintw(1,1, txt1);
mvprintw(2,1, txt2);
attron(A_REVERSE);
mvprintw(3,1, txt3);
attroff(A_REVERSE);
mvprintw(4,1, txt4);
mvprintw(5,1, txt5);
break;
case 4:
mvprintw(1,1, txt1);
mvprintw(2,1, txt2);
mvprintw(3,1, txt3);
attron(A_REVERSE);
mvprintw(4,1, txt4);
attroff(A_REVERSE);
mvprintw(5,1, txt5);
break;
case 5:
mvprintw(1,1, txt1);
mvprintw(2,1, txt2);
mvprintw(3,1, txt3);
mvprintw(4,1, txt4);
attron(A_REVERSE);
mvprintw(5,1, txt5);
attroff(A_REVERSE);
break;
}
//reakcja
if(znak == 10)
{
switch(ktory)
{
case 1:
return ktory;
break;
case 2:
return ktory;
break;
case 3:
return ktory;
break;
case 4:
return ktory;
break;
}
}
}while(ktory != 5 || znak != 10);
printw("Koniec programu, przycisnij przycisk...");
getch();
endwin();
cout << "Przykladowa sytuacja. " << endl;
return ktory;
}
Mam taki kod funkcji klasy menu. Zwraca ona wartosc wyboru menu.
Następnie mam inną klase Program , a w niej używam zwróconej wcześniej wartości do wyświetlania danej możliwości menu:
int z =0;
Menu a;
z = a.tworz_menu();
if (z !=5)
{
switch(z)
{
case 1:
Program::menu1();
break;
case 2:
Program::menu3();
break;
case 3:
Program::menu2();
break;
case 4:
Program::menu2();
break;
}
}
}
z czego np. menu 2 wygląda tak:
void Program::menu3()
{
cout << "udaaaaalo sieeee" << endl;
cout << "udaaaaalo sieeee" << endl;
cout << "udaaaaalo sieeee" << endl;
cout << "udaaaaalo sieeee" << endl;
cout << "udaaaaalo sieeee" << endl;
}
i wyświetla mi się to tak:
Ma ktoś jakis pomysł dlaczego ?