Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: SDL nappulat

punppis [12.05.2008 09:01:57]

#

Onko SDL-kirjastoissa joku valmis systeemi nappuloiden tekemiseen? Eli tarkoitan siis esim. jotain valmista funktiota tai luokkaa, jolla voi tehdä nappulan, jota painamalla tapahtuu jokin sille määritetty funktio. Vähän samaan tyyliin kuin javascriptissä onClick-ominaisuus.

Vai pitääkö tämä kaikki tehdä vaikean kautta, eli tarkastaa hiiren sijainti, onko hiiren alla nappulaa ja sitä kautta sählätä nuo nappuloille määritellyt funktiot. Tämä ei kyllä toimisi, jos esimerkiksi pitäisi painaa päälimmäistä nappulaa (jos siis useampi mennyt päällekäin).

Blaze [12.05.2008 09:14:30]

#

punppis kirjoitti:

Onko SDL-kirjastoissa joku valmis systeemi nappuloiden tekemiseen?

Ei oo.

punppis kirjoitti:

tarkastaa hiiren sijainti, onko hiiren alla nappulaa ja sitä kautta sählätä nuo nappuloille määritellyt funktiot

Kyllä.

Pekka Karjalainen [12.05.2008 09:22:59]

#

SDL-sivujen haulla löytää. Vaikkapa tällaisia on.

Pekka Karjalainen [12.05.2008 14:10:15]

#

Jahas, ei saa muokata enää? Ajattelin lisätä, että jos alkuperäinen kysyjä haluaa kuitenkin tehdä oman pikkusysteemin nappuloille ja valikoille, tuo päällekkäisyysongelma on ratkaistavissa. Käytän nyt termiä ikkuna, vaikka kyse voi olla napeista ja muista GUI-objekteista.

Monissa GUI-malleissa ikkunoilla ym. on sijainnin xy-koordinaatistossa lisäksi myös käsitteellinen korkeus, eli ns. z-indeksi. Se kertoo, kuinka korkealla kukin ikkuna on suhteessa toisiinsa. Jos samassa paikassa on useampi klikkauksen mahdollinen kohde, niistä lopulliseksi valitaan se, jonka z-indeksi kertoo sen olevan ylimpänä. (Idea on tietenkin, että jokaisella ikkunalla on oma erillinen z-indeksinsä, jotta aina tietää missä järjestyksessä ne ovat.)

Ikkunat oletettavasti on viisasta laittaa johonkin rakenteeseen, josta niiden sijaintia ja z-indeksiä voi kysellä, ja näitä tietoja päivittää helposti. Tosin jos ikkunoita on kerralla vähän, riittää yksinkertainen vektorikin hyvin.

Tällaisen yksinkertaisen GUI-logiikan miettiminen ja toteuttaminen on varmasti ihan hauskaa puuhaa, mutta siinä on se pieni ongelma, että jotkut muu ovat jo tehneet sen useita kertoja. Siksi tuo kirjastolinkki tuli ekana mieleen :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta