Witam. Piszę menu do wykorzystania w moim programie używając ncurses. Problem polega na tym że po naciśnięciu klawisza Enter na wybranej pozycji w menu nie wykonuje się akcja, lecz jeśli np. mam wybraną pozycję 3 podświetlenie schodzi na pozycję 4 - nie reaguje jak na enter lecz jak na strzałkę w dól. Oto kod:
#include <iostream>
#include <ncurses.h>
using namespace std;
int main()
{
initscr();
keypad(stdscr,TRUE);
printw("Wcisnij klawisz...\n");
noecho();
const char menu1[] = "Dodaj wpis";
const char menu2[] = "Usun wpis";
const char menu3[] = "Wszystkie wpisy";
const char menu4[] = "Posortowane wpisy";
const char menu5[] = "Znajdz wpis";
const char menu6[] = "Zapis i wyjscie";
int pozycja = 1;
int ster;
const short int min_wybor = 1;
const short int max_wybor = 6;
do
{
ster = getch();
clear();
if (ster == 259 && pozycja != min_wybor)
{
pozycja--;
}
else if (ster = 258 && pozycja != max_wybor)
{
pozycja++;
}
switch (pozycja)
{
case 1:
mvprintw(6,5,menu2);
mvprintw(7,5,menu3);
mvprintw(8,5,menu4);
mvprintw(9,5,menu5);
mvprintw(10,5,menu6);
attron(A_REVERSE);
mvprintw(5,5,menu1);
break;
case 2:
mvprintw(5,5,menu1);
mvprintw(7,5,menu3);
mvprintw(8,5,menu4);
mvprintw(9,5,menu5);
mvprintw(10,5,menu6);
attron(A_REVERSE);
mvprintw(6,5,menu2);
break;
case 3:
mvprintw(5,5,menu1);
mvprintw(6,5,menu2);
mvprintw(8,5,menu4);
mvprintw(9,5,menu5);
mvprintw(10,5,menu6);
attron(A_REVERSE);
mvprintw(7,5,menu3);
break;
case 4:
mvprintw(5,5,menu1);
mvprintw(6,5,menu2);
mvprintw(7,5,menu3);
mvprintw(9,5,menu5);
mvprintw(10,5,menu6);
attron(A_REVERSE);
mvprintw(8,5,menu4);
break;
case 5:
mvprintw(5,5,menu1);
mvprintw(6,5,menu2);
mvprintw(7,5,menu3);
mvprintw(8,5,menu4);
mvprintw(10,5,menu6);
attron(A_REVERSE);
mvprintw(9,5,menu5);
break;
case 6:
mvprintw(5,5,menu1);
mvprintw(6,5,menu2);
mvprintw(7,5,menu3);
mvprintw(8,5,menu4);
mvprintw(9,5,menu5);
attron(A_REVERSE);
mvprintw(10,5,menu6);
break;
}
attroff(A_REVERSE);
if (ster == 10)
{
switch (pozycja)
{
case 1:
mvprintw(1,1,"Opcja 1");
break;
case 2:
mvprintw(1,1,"Opcja 2");
break;
case 3:
mvprintw(1,1,"Opcja 3");
break;
case 4:
mvprintw(1,1,"Opcja 4");
break;
case 5:
mvprintw(1,1,"Opcja 5");
break;
}
}
}while (pozycja != 6 | ster != 10);
move(9,0);
printw("Koniec programu nacisnij dowolny klawisz...");
getch();
endwin();
}
Niby wszystko tak jak być powinno, więc dlaczego enter nie działa jak powinien?