C++ Menu użytkownika

0

Witam
Mam małe zadanie do zrobienia. Chodzi o to , aby połączyć kilka programów w jeden z menu. Wciskając np 1 ma włączyć się program liczący silnie , wciskając 5 aby zakończyć działanie programu. Chodzi mi tylko , aby ktoś podpowiedział jak się za to zabrać nie liczę na gotowy kod.

0

Kody tych programów umieścić w odpowiednie funkcje. Potem w funkcji main umieścić w pętli kod wyświetlający użytkownikowi dostępne opcje, następnie pobierać od niego wybraną opcję i w instrukcji switch wywoływać odpowiednią funkcję. I wszystko ;). Pokombinuj i napisz jak utkniesz.

0

Wciśnięty klawisz zapisujesz do zmiennej i poprzez switch() odczytujesz wartość :)

 
char wybor;
wybor = getch();
switch( wybor )
{
         case '1':
             Silnia();
             break;
         case '2':
             Funkcja2();
             break;
         case '3':
             return 0;
             break;
         default:
             break;
}
0

Pewnie utknie na tej "piątce", po wciśnięciu której program ma przerwać swoje działanie. Pewnie powinno się pokombinować coś z wątkami. Wątek główny wyświetlałby menu i na podstawie pobranego rozkazu uruchamiał drugi wątek z jednym z programów (jak pisałeś zamkniętym w funkcji). Jeśli jednak w trakcie wykonywania tego programu użytkownik wciśnie 5, to trzeba zarzymać przykładowe liczenie silni - czyzli ubić wątek z silnią?
Czy gdyby jeden z podprogramów przydzielał jakąś istotną pamięć, to czy wystarczy ot tak go ubić, czy wypadałoby jakoś tą pamięć pozwalniać?

0

@up
B Z D U R A
Żadnych wątków tu nie trzeba - wystarczy zwykła pętla while. Nie strzelaj do muchy z armaty!

0

@up
Latwiej trafic ;)

Petla while i jesli chce zeby to ladniej wygladalo to z windows.h biblioteki funkcje GET_ASYNCKEYSTATE jak dobrze pamietam tylko trzeba bufor ogarnac bo zapamietuje wczytane klawisze.

0

Będę powtarzał do znudzenia, do zaawansowanych UI konsolowych jest NCurses.

0

WinApi (z biblioteką windows.h) oferuje Ci pętlę komunikatów i obsługę WM_KEYDOWN (kiedy klawisz został wciśnięty). Dodatkowo nie zatrzymuje programu i wszystko działa nadzwyczajnie sprawnie. Polecam do nauczenia się po opanowaniu podstaw. Jest dużo świetnych kursów w internecie na ten temat.

0

WinApi to samobójstwo :P lepiej wziąć się za platformę .NET, dużo łatwiej się tego nauczyć :P

Wiem ,że w szkołach karzą uczyć się tego Microsoftowego gówna ale na prawdę polecam .NET i C# bo na studiach to będziecie wałkować xd

0

Aby dodać wychodzenie z programu to uzyj funkcji EXIT() i zrób tak:


case '5':    // dodaj tego CASE 5 czyli 5 opcje 
exit(1);

 

I tyle xd powinno działać xd

0

@Odyn nie wiem o co Ci chodzi, że WinApi to samobójstwo :P jestem samoukiem z programowania i dosyć szybko mi ta wiedza przyszła do głowy. Jedyną wadą jaką do tej pory zauważyłem to to, że WinApi jest oparte na strukturach :)

0

Ja nie mówię ,że nie da się tego nauczyć ale porównaj sobie skomplikowanie składni WinAPI z językami .NETowymi.

Po co sobie utrudniać życie xd

0

ale porównaj sobie skomplikowanie składni WinAPI z językami .NETowymi.
A teraz weź pod uwagę, że z wyjątkiem Metro, które nie wiadomo czy się przyjmie (oby nie), oraz Services for Unix, z którego nikt nie korzysta, wszystko inne włącznie z .Net Framework jest nakładką na WinAPI. Jakbyś nie chciał, to i tak z tego „microsoftowego gówna” musisz korzystać.

0

Może i masz racje. Ale mam nadzieje ,że się to kiedyś zmieni ;p

0

^^ Każdy pisze w tym, w czym mu wygodniej :P

0

Nie ma się co oszukiwać. Napisanie czegoś większego w winapi to koszmar. Trzeba prawie wszystko samemu obudowywać w wrappery, bo brak obiektowości okrutnie utrudnia życie. Stworzenie zwykłego okna to 2 strony kodu, brak gui builderów(przynajmniej ja się z takim wynalazkiem nie spotkałem).

@Odyn: ja tam bym wolał, żeby się nie zmieniło. Upada cała kompatybilność wsteczna, starsze programy na nowym rozwiązaniu pewnie by już nie ruszyły, nie mówiąc już o czymś napisanym np. w takim MFC. Chyba, że MS zostawiłby 2 systemy okien... to by dopiero było zamieszanie.

0

W sumie racja. Nieporęczne, ale potężne narzędzie. Piszę bazę danych w WinApi i mam już ponad 5000 linijek kodu, a efekty niewielkie ;p

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