Forum » Programiranje » Klikanje slikic (win32 C)
Klikanje slikic (win32 C)
hatch ::
Obstaja se kak dober nacin za delanje slikic v dolocenem windowu, s tem da bi lahko kontroliral klike na posamezne slikice. (cardgame za primer)
delam v lcc-win32 (podpira ves stuff od Visual C++ 6.0, je pa precej hitrejsi in free)
nacin 1) delanje bitmapov direktno na DC.. problem pri sprejemanju klikov.. je treba oznacit koordinate vsakega bitmapa posebej.. precej zamudno (predvsem zaradi overlappinga)
nacin 2) naredim STATIC control v brezokvirnem CHILD-u.. klike se precej enostavno detecta.. problem nastane pri refreshanju ter tak nacin pobere precej vec pomnilnika
nacin 3) podobno kot nacin 2, samo da se uporabi BUTTON namesto STATIC.. kliki so se bolj enostavni za detectanje.. dodaten problem nastane pri nastavitvi gumba. (se treba precej jebat da normalno zgleda)
Obstaja se kak drug dober nacin za to?
delam v lcc-win32 (podpira ves stuff od Visual C++ 6.0, je pa precej hitrejsi in free)
nacin 1) delanje bitmapov direktno na DC.. problem pri sprejemanju klikov.. je treba oznacit koordinate vsakega bitmapa posebej.. precej zamudno (predvsem zaradi overlappinga)
nacin 2) naredim STATIC control v brezokvirnem CHILD-u.. klike se precej enostavno detecta.. problem nastane pri refreshanju ter tak nacin pobere precej vec pomnilnika
nacin 3) podobno kot nacin 2, samo da se uporabi BUTTON namesto STATIC.. kliki so se bolj enostavni za detectanje.. dodaten problem nastane pri nastavitvi gumba. (se treba precej jebat da normalno zgleda)
Obstaja se kak drug dober nacin za to?
hatch ::
Ja ja.. to znam..
samo je fora, ker je treba markirat vsako slikico posebej za detectanje klikov
samo je fora, ker je treba markirat vsako slikico posebej za detectanje klikov
hatch ::
Ja tako imam narejeno, samo je drek pri osvezevanju, ker traja kar nekaj casa... in je efekt grd.
wintermute ::
Po mojem bi slo takole (za prvi nacin):
Vse kar rabis v zvezi z objektom ("slikco") (recimo HBITMAP pa pozicijo in velikost, ce gre za pravokotne oblike) das v strukturo.
Ko postavljas objekte na povrsino, jih (oziroma pointerje na njih) v istem vrstnem redu dodajas v urejen seznam ala std::list iz standardne C++ knjiznice (ekvivalent v C-ju poisci na netu, ali pa implementiraj sam, recimo kot doubly linked list).
Ko handlas npr. WM_LBUTTONDOWN gres, opravljajoc hit-teste, v pravilni smeri (s tem upostevas prekrivanje) skozi listo dokler ne najdes objekta na katerega si kliknil. Ce gre za pravokotnike, je svar zelo preprosta, ce gre za kroge/elipse/poligone/vec poligonov si lahko pomagas z regioni (HRGN), ce gre za sprite nepravilne oblike pa z maskami.
Ko najdes pravi objekt, lahko z njim pocnes razne stvari, na primer move forward/backward (tako da prestavis objekt za mesto naprej/nazaj v listi), bring to front/move to back (tako da postavis objekt na zacetek/konec liste) itd.
BTW, taksnele stvari se da zelo enostavno in pregledno implementirati v C++.
HTH.
Vse kar rabis v zvezi z objektom ("slikco") (recimo HBITMAP pa pozicijo in velikost, ce gre za pravokotne oblike) das v strukturo.
Ko postavljas objekte na povrsino, jih (oziroma pointerje na njih) v istem vrstnem redu dodajas v urejen seznam ala std::list
Ko handlas npr. WM_LBUTTONDOWN gres, opravljajoc hit-teste, v pravilni smeri (s tem upostevas prekrivanje) skozi listo dokler ne najdes objekta na katerega si kliknil. Ce gre za pravokotnike, je svar zelo preprosta, ce gre za kroge/elipse/poligone/vec poligonov si lahko pomagas z regioni (HRGN), ce gre za sprite nepravilne oblike pa z maskami.
Ko najdes pravi objekt, lahko z njim pocnes razne stvari, na primer move forward/backward (tako da prestavis objekt za mesto naprej/nazaj v listi), bring to front/move to back (tako da postavis objekt na zacetek/konec liste) itd.
BTW, taksnele stvari se da zelo enostavno in pregledno implementirati v C++.
HTH.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | "Dinamicna" sprememba razreda v C++Oddelek: Programiranje | 1943 (1335) | Spura |
» | kako narediti program ki bere drugi programOddelek: Programiranje | 5802 (4115) | imagodei |
» | C++ programirane v Open GL oz. Direct xOddelek: Programiranje | 3000 (2271) | Vesoljc |
» | Kje začeti z programiranjem? (strani: 1 2 )Oddelek: Programiranje | 8022 (5626) | BigWhale |
» | Visual Basic, C#, C++, razlike... (strani: 1 2 3 )Oddelek: Programiranje | 12680 (10351) | 64202 |