» »

Izdelava menija v C-ju

Izdelava menija v C-ju

Trancedeejay ::

Mene pa zanima kako izdelate menije v C-ju. Ali je kaj vazno kako je narejen rob(recimo ko so zvezdice okol notri pa so imena programov katera se izbirajo za zagon) ali vse skupaj naredite s printf ali for zanko ali kako. Kako narest da so nasredi imena in se lahko po njih premikas s tipko gor dol(da ves kje se nahajas se premika po imenil bel pravokotnik in notri je ime programa s crnimi crkami-da se ga vidi, ko pa premaknes recimo gor, ostanejo crke bele na crni podlagi, kvadratek pa je potem visje). Pa se nekej, ponavadi vidim da so parametri podani posebej v txt datotekah. Na kaksen nacin se deklarira path,kam skoci program po zeljene parametre. Sorry za zacetniska vprasanja
Have a nice Day

Matt
Music is the key

Vesoljc ::

pozicioniranje ter barvanje teksa je ponavadi dokaj preprosto (ce imas pravi lib) v smislu:
SetTextColor(r,g,b), TextOut(10,10, "bla bla"), SetTextBackground(r,g,b), ...

druga stvar je potem input: za zacetek lahko beres posamezne znake/tipke ter tako lovis input (getchar, getkey, spet odvisno od lib-a).

tretja stvar je pa state machine, ki handla meni:
init: preberes tekst datoteko v obliki:
(x,y):(r,g,b):ID:text
(100,100):(255,0,0):TITLE:Main
(100,120):(150,0,0):ENTRY:File
(100,140):(150,0,0):ENTRY:Edit
(100,160):(150,0,0):ENTRY:Options
(100,180):(150,0,0):ENTRY:Quit
tekle string lahko potem preparsas z skupino *scanf funkcij. tako dobis "formo" menija. preberes title, ter entry-e kolikor jih je, ter vse skupaj shranis v en array/vector. nato uporabis se en index, ki ti pove kateri entry je trenutno izbran.
main loop zgleda potem nekak tko:
int selection = 0;
while( input != quit )
{
    // draw menu
    // get input
    // if input == up || down
       // selection-1, selection+1
       // wrap selection (if selection < 0, selection = entrycount-1)
    // if input = action/enter
       // if selection == File
          // do something
       // if selection == Edit
          // buy me a beer
}


potem ti ostane samo se vodenje hierarhije menija (na katerem zaslonu si).
za pot do datotek pa uporabis kar navadno polje znakov ali string (str* funkcije): "f:/work/test/menu.ini"
to potem kot paramter podas funkcije za opiranje filetov, (f* nekaj).
Abnormal behavior of abnormal brain makes me normal...

Trancedeejay ::

HI
Dela se v linuxu. Pa prevede to vsak gcc? Trenutno mi jamra nekej(probavam se nekej) parse error before '!=' token, predvidevam(vsaj ko sem gledal po netu) da je to fora prevajalnika.
Have a nice Day

Matt
Music is the key

Trancedeejay ::

Se nekej me zanima kar se tice zagona programa. Rabil bi zagnat program in pa nato se enega brez da bi drugega zaprl. Pri funkciji execv se naredi da zalaufam program,kjer se nato zalaufa se drugi, ki pa prvega prekine. Kako to postimat A je se kaj drugega kot fork in podobno?
Have a nice Day

Matt
Music is the key

64202 ::

if(!fork()) exec(...)

Naj bi pa bil v POSIX standardu spawn, ki je isto kot tole zgoraj, samo ga na linuxu se nisem uporabljal...
I am NaN, I am a free man!

Trancedeejay ::

Hi
Kako bi izvedli po koncanju enega programa, da se zopet vrne v meni, torej da ko program konca se zazene program z menijem. Uporabil bi funkcijo execve, path pa je /home/matej/menu/itBoardTest.c
V funkciji execv najbrz najprej podam path. se pravi char *path (kjer je napisana lokacija programa), ne vem pa kako naprej. Ali funkcija takoj zazene program, prevede in zazene? Za zagon sam uporabljam ./a.out
Hvala za toleranco.

Matt
Music is the key

Trancedeejay ::

Prej sem narobe navedel path. Torej program je v svojem foldru, path je do tistega foldra, za izvrsitev pa bi zalaufal a.out v tistem foldru, torej skompajlano zadevo. Trenutno se ukvarjam da ko en program pride do recimo zadnje vrstice,kjer je podano kater program2 in kje se nahaja ta program za zalaufat.
trenutno imam napisan execv("/home/matej/menu",a.out,NULL),
Vem da je nekaj mimo,ker me se osnove jebajo, res bi prosil, ce bi mi kdo znal pomagat, da ko se program izvrsi zalaufa drugega,ce se da brez forka.
Have a nice Day

Matt
Music is the key

Gundolf ::

Ne poznam sintaxe exec ukazov ampak poskusi dati tudi a.out v narekovaje - "a.out" ker je to tekst in ne ime spremenljivke..

Trancedeejay ::

ja to sem postimal, sem narobe napisal v prejsnjem postu, v programu so narekovaji.
Have a nice Day

Matt
Music is the key


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Sony DVD rekorder problem

Oddelek: Zvok in slika
51026 (964) Amaterček
»

Kako pobrat podatke iz datoteke

Oddelek: Programiranje
71125 (864) Trancedeejay
»

Kater proc in plato?

Oddelek: Kaj kupiti
251544 (1300) mtosev
»

Problem z racunalnikom

Oddelek: Strojna oprema
61272 (1208) Trancedeejay
»

Linux

Oddelek: Operacijski sistemi
351657 (1022) fx

Več podobnih tem