[ Srki_82 @ 05.03.2005. 23:33 ] @
Uvek sam imao zelju da napravim neku lepu aplikaciju koja bi mogla da menja skinove. Do sad sam to radio sa slikama, raznim komponenticama koje podrzavaju OwnerDraw stil itd., a sad mi je palo na pamet da bih mozda mogao da iskoristim mogucnos WinXP-a za postavljanje skina za moju aplikaciju. Da li je moguce aplikacija koristi WinXP theme razlicitu od onog koji je podesen u WinXP-u? Razmisljao sam o pravljenju WinXP theme specijalnu za moj programcic. Kako se prave theme? Nigde nisam uspeo da pronadjem nesto o tome. Drugi nacin koji mi pada na pamet je subclass svih komponenti koje bih koristio i tako bih mogao da ih crtam kako god pozelim. Drugi pristup bi radio i na ranijim Windowsima. Iskreno... vise bih voleo da naucim da pravim theme i ako je moguce da ih postavim samo za svoj program.
[ Nemanja Avramović @ 05.03.2005. 23:53 ] @
e, i mene ovo zanima...
nalazio sam do sad dosta komponenti za skinove, ali sve koje su i sluzile necemu su se (debelo) placale

a kako bi bilo da napravimo nasu vcl za to?
ja sad radim na nekom projektchicu, tako da ne verujem da bih postigao i na ovome da radim, ali sta znas... mozda i uspem ;)
[ Srki_82 @ 06.03.2005. 01:27 ] @
Posto uvek imam zelju da moji programcici lepo izgledaju i mislio sam da napravim komponenticu koja kad je stavis na formu automatski preuzima na sebe iscrtavanje (ili podesavanje WinXP theme samo za programcic) svih standardnih komponenata... izgled prozora (titlebar, okvir, dugmici za minimize, mazimize, close, restore, help), dugmica, edit, list i combo boxova, progressbar, statusbar... sve sto WinXP thema moze da kontrolise. Ako neko zna neki zanimljiv link za WinXP theme neka ga postavi ovde pa cemo videti sta moze da se uradi s tim. Verujem da bi svi zeleli komponenticu koja bi radila ovo sto meni treba... ako mi malo pomognete dobicete je besplatno :) Bas sam dobar, zar ne?
[ Srki_82 @ 06.03.2005. 21:37 ] @
Od WinXP stilova nema nista... http://draginol.stardock.com/articles/xpskinning.html
Izgleda mi ne gine subclass osnovnih kontrola. Potrazi cu negde source za CTL3D da vidim kako su oni to uradili, a ako ne nadjem... hmmm... sta bude bice :)
[ Nemanja Avramović @ 07.03.2005. 01:40 ] @
verujem u tebe ;)

evo ja zavrsih moj pojekat na http://www.amplyrics.co.sr/
[ Srki_82 @ 07.03.2005. 01:43 ] @
Verovatno cu da pocnem od obicnog dugmenceta. Koliko znam Windows registruje klasu BUTTON i Delphi je koristi prilikom kreiranja prozora. Planiram da "skin" ustvari bude DLL fajl koji ce da sadrzi funkcije za crtanje svih osnovnih komponenti pa bi trebalo da bude moguce da se napravi i animirani skin (ribice plivaju u dugmencetu ili tako nesto). Trenutno sto mi pada na pamet je presretanje poruka WM_SIZE, WM_SETFONT, WM_SETTEXT i WM_PAINT. Verovatno u extra bajtovima koji se rezervisu za klasu BUTTON postoje podaci o tome da li je kursor iznad dugmica, da li je dugmence pritisnuti, itd., ali nemam pojma kako i gde to da pronadjem. Ima li neko neki link gde bih to mogao da saznam?
[ _v!rus_ @ 07.03.2005. 02:26 ] @
Pokusavao sam i ja da se bavim slicnim operacijama ali se nije bas slavno zavrsilo. U D-u fakticki postoje 2 tipa kontrola - potomci TGraphicControl i TWinControl. Potomci onih prvih obezbedjuju property Canvas i OnPaint i onda je sve moguce, medjutim oni drugi su wrapperi za ComCtl i sl., zato se cesto nazivaju i wrapped kontrole i na njima je teze crtati. Uspeo sam da pomocu API funkcija Begin i EndPaint dobijem HDC wrappovanih kontrola, ali se samo iscrtavanje kotrola vrsilo samo na zadatu proceduru. Probao sam da "uglavim" iscrtavanje kontrola u TForm.OnPaint, ali nije radilo sa pomeranjem forme van ekrana i vracanjem nazad i sl. Ne znam da li bi radilo koriscenjem presretanja WM_PAINT poruka, onda bi se npr. prostom AppMsgs kontrolom moglo vrsiti presretanje i iscrtavanje po kontrolama na nivou aplikacije. Samo tesko ce biti odredjivanje koje kontrole treba da dobiju poruku a koje ne trebaju, jer kad se poruka emituje ako je presretnes i iscrtas po kontroli a poruku ne progutas kontrola ce opet iscrtati svoje, a ako progutas poruku onda ostale kontrole koje nisi obradio se nece iscrtati.
[ Srki_82 @ 07.03.2005. 16:49 ] @
Hteo bih da uradim nesto kao WindowBlinds samo sa mnogo manje mognucnosti naravno... bar za pocetka :) WindowBlinds mi je i dao ideju da ne pravim nove kontrole vec da subclass-ujem postojece. Pokusavacu jos malo da se patim sa ovim, ali s obzirom da na netu bas ne mogu da nadjem neke zanimljive artikle na kraju ce se sve svesti na nove kontrole :(