Ncurses i klawisz Enter

0

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?

1

Czyżby przypisanie zamiast porównania?

 
else if (ster = 258 && pozycja != max_wybor)
 
else if (ster == 258 && pozycja != max_wybor)

? ;-)

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