Forum » Programiranje » 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
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:
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).
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
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
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...
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
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
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
Have a nice Day
Matt
Music is the key
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Sony DVD rekorder problemOddelek: Zvok in slika | 1088 (1026) | Amaterček |
» | Kako pobrat podatke iz datotekeOddelek: Programiranje | 1187 (926) | Trancedeejay |
» | Kater proc in plato?Oddelek: Kaj kupiti | 1605 (1361) | mtosev |
» | Problem z racunalnikomOddelek: Strojna oprema | 1352 (1288) | Trancedeejay |
» | LinuxOddelek: Operacijski sistemi | 1721 (1086) | fx |