Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

(TIcon->SaveToFile) Kako snjimiti ico sa 256 boja

[es] :: C/C++ programiranje :: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja

[ Pregleda: 3302 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja08.11.2004. u 10:46 - pre 205 meseci
(Borland C++ Builder 6(ko nije skonatao iz naslova))
Ok, nije mi jasno zasto to radi...i kako da resim.

lepo uradim (WINAPI) ExtractIcon i dobijem hIcon
i dam je na korischenje TImage objektu(TImage displays
a graphical image on a form) i sad mu pozovem metodu...
TImage->Picture->Icon->SaveToFile(<ansi string>) i dobijem
32x32x4b crap!

[pripremite vecice za bljuvanje]
Da ne bi radio kopanje po resursima i trazenje prvog ICONGROUP-a
i to sve sa shellexecute prosledjivao resourcehacker-u i onda
cekao da se on zavrsi i potom loadovao <somepath>/temp.ico
somebodey Help me!!


pored ovog problema, evo vam nesto da se zanimate:
Binary desktop clock v1.3.6.0(if aj rmmbr corectly)
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja08.11.2004. u 16:24 - pre 205 meseci
[AKO NEKO IMA BOLJE RESENJE PLEEZ POST IT]
[BTW: znAAm da postoji bolje resenje]

E ovako sam ga resio u toku istog dana.
Code:

1.OpenFileDlg->Execute
2. shell32.dll, PickIconDlgW(fname, icon_index)
3. LoadLibrary(fname)
4. EnumResourceNames(....., EnumResourceNamesFunc, (char*)fname);
5. U okviru funkcije EnumResourceNamesFunc
    icon_index--;
    if (icon_index==0) {
        CreateProces( resourceHacker.exe -extract .... );
        WaitForSingleObject( 10secs max);
        return false;  //ovde se prekida petlja EnumResourceNames
    }
    else return true;


Mozda ce te se zapitati sta ovo radi, ja bih.
Anyway PickIconDlgW vraca index ikone, iz
datog icon resursa, koji je pogodan za dalje
koriscenje u WinAPI pozivu:
HICON ExtractIcon(fname, index).
Kontam da ta funkcija sigurno ne gleda u pasulj
gde se data ikona nalazi vec verovatno trazi po
resursima.
Ovaj kod pokazuje da to ona verovatno cini
trazeci ICONGROUP resurse redom i lock-ujuci
onaj koji je po index-u odgovarajuci.

Sve bi bilo mnogo jednostavnije da sam ja mogao
da snjimim HICON u file nekako a da pritom
ne izgubim sve ikone osim 32x32 16boja.
Ovako ResourceHacker cini to umesto mene.

Snjimi ikonu u temp.ico koju ja samo kasnije loadujem
radi pokazivanja a kad zaista zatreba cela, onda kopiram
temp.ico gde treba.
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja08.11.2004. u 18:37 - pre 205 meseci
OK, jos malo uzasa za one koji prate
ovo(sto se blago pretvara u blog).

Uradite ExtractIcon i dobijete handle ikone
i onda pozovete metodu za pridruzivanje
HICON-a TImage objektu i onda je snjimite.
Otprilike:
Code:

HICON hIcon = ExtractIcon("exename.exe",0);
TImage->TPicture->TIcon->Handle = hIcon;
TImage->TPicture->TIcon->SaveToFile("icon.ico");


i dobijete predivnu ikonu sa 16 boja iako je TImage
objekat svo vreme dok je ikonica bila loadovana
prikazivao istu sa svih 256 ili vise boja.

Primenite metod iz prethodnog post-a i
dobijete extractovanu ikonicu na HDD-u i uradite sledece:

Code:

TImage->TPicture->TIcon->LoadFromFile("temp.ico");
TImage->TPicture->TIcon->SaveToFile("icon.ico");


Ikonica se(naravno) u picture objektu prikazivala
sasvim ok(kao i ona dobijena prethodnom metodom)
ali zato kad je snjimite....ostaje ista...divna...puna boja.

ZAAAAAAAAAASSSSSSTOOO!!!!!!!

Sa ovim saznanjem mislim da cu za narednih godinu
dana proniknuti u srz problema i napokon napraviti objekat
koji extractuije ikonice iz exe file-ova.
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

TheAlas
Bojan Sala
Senior Programmer Analyst
GTECH
Beograd

Član broj: 36584
Poruke: 117
*.nat-pool.bgd.sbb.co.yu.



+1 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja10.11.2004. u 11:20 - pre 205 meseci
Pa ne razumem se u Borlandove alatke i biblioteke, ali usled kratkotrajnog proucavanja tvojih tekstova pretpostavio sam da tebi treba kod za extratovanje ikona iz resursa exe/dll fajlova i snimanje istih u ICO fajlove.
Za sve to postoji API, poseti moj sajt i videces program IconMaster koji koristi jedno 2000 linija koda (gomila apija, bez msvc/borland-specific stvari) za kreaciju ICO fajla, tako da nije bas jednostavno (koliko je samo taj ico fajl jednostavan). Poseti www.codeguru.com i www.codeproject.com za neke kodove, a ako ti bas ne ide, mora da i taj Borland ima nesto poput msdn-a gde mozes naci gotove c/cpp fajlove za manipulisanje slikama (snimanje/otvaranje ini, ico, bmp, dib, wmf, itd..)

Srecno u svakom slucaju !

 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 799
217.119.242.*



+62 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja11.11.2004. u 08:21 - pre 205 meseci
Elem, pogledao sam malo po unit-u Graphics.pas za snimanje TIcon u fajl. Ukratko, u proceduri WriteIcon() je ZAKUCANO snimanje sa 16 boja; a tu proceduru poziva metoda TIcon.SaveToStream() (iliti TIcon->SaveToStream()) koju opet poziva nasledjena metoda TGraphic.SaveToFile().
Postoji nacin da se uradi, ali ja stvarno nemam vremena da to isprobavam. Dacu ti smernice, pa se poigraj. Ako bas zapne, VICI.

Probaj da prekopiras/prevedes proceduru WriteIcon() u C++, zatim izmenis parametre (vidi se 'iz aviona' broj 16 na dva mesta), zatim napravi svoj TStream koji ces da prosledis toj funkciji, i ako to sve prodje, onda si na konju: TStream prekopiras na TFileStream ili kako vec ide. Kraj.

Rajko

P.S. Uh, tesko ce ti to ici, a to zato sto treba jos neke funkcije da prevedes a koje se pozivaju u WriteIcon...sve u svemu, ima posla.
 
Odgovor na temu

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja11.11.2004. u 12:01 - pre 205 meseci
Hvala, Rajko, vidish nije mi to palo na pamet. Videcu dal mogu da ga
izmajmunishem.

TheAlas, kako si mislio da vidim koje funkcije pozivash za dumpowanje
ico file-a? Sta da deasembliram IM?

Ok pokusacu rajkov predlog, posto mi se to cini kao najgladji prelaz.
Ako ne ide, kopacu po www.codeguru.com, posto po codeproject-u
mislim da vec jesam.
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja11.11.2004. u 12:19 - pre 205 meseci
Sad sam skontao da nema ni traga od grpahics.pas file-a?!
Evo profesore vidite ja vec skacem, ovaj, mislim, VICEM!!
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 799
217.119.242.*



+62 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja11.11.2004. u 15:24 - pre 205 meseci
Nemoguce, mora da ga imas. Imao sam instaliran CBuilder na masini i tacno znam da sam uz njega dobio i VCL u Pascalu. Trazi bilo koje *.pas fajlove.
Aj pogledacu kuci, tamo jos uvek imam instaliran CBuilder 5.

Rajko
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 799
217.119.242.*



+62 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja12.11.2004. u 07:17 - pre 205 meseci
E, bedak; ni kuci nemam vise CBuilder instaliran, jer sam skoro preinstalirao Windows...
Ma nije bitno, potrazi od bilo koga ko ima Delphi unit Graphics.pas i navali na posao. Ako bude problema sa prevodjenjem, opet zovi.
(Hehe, jedan od razloga sto Delphi VCL nikad nije preveden na C++ je razlika u OOP-u koji implementiraju; ima stvari koje su bukvalno neprevodive, i pritom ne mislim na elemente jezika)

Rajko
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.83.beocity.net.

Sajt: localhost


+4 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja14.11.2004. u 10:06 - pre 205 meseci
Citat:
Rapaic Rajko:
(Hehe, jedan od razloga sto Delphi VCL nikad nije preveden na C++ je razlika u OOP-u koji implementiraju; ima stvari koje su bukvalno neprevodive, i pritom ne mislim na elemente jezika)


jel možeš malo ovo da elaboriraš? na šta konkretno misliš?
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 799
217.119.242.*



+62 Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja15.11.2004. u 07:51 - pre 205 meseci
E, pa davno je bilo (ima 2 godine najmanje), pa nisam siguran da cu tacno da prenesem problem.
Ukratko: 'inherited'. Recimo da u nekoj klasi TFirstClass imas message handler-e koji su svi odreda private i dynamic. Pravis naslednika i override-ujes neki handler, i u jednom trenutku treba da izvrsis 'originalni' nasledjeni handler. Tada bi islo nesto kao
Code:

  TFirstClass::FirstHandler(...);


...ali, ne lezi vraze. Kompajler kaze 'NO-NO', uopste ne zna koja ti je to metoda, pa PRIVATE je, zar ne?
A u 'tupavom' Delphi-ju ja samo napisem
Code:

  inherited; // ovo znaci automatsko prenosenje parametara nasledjenoj metodi

i stvar radi. Da, cudni su putevi programerski...Sad se secam da je CBuilder uveo neko prosirenje jezika u vezi 'inherited' i to je valjda neki makro ubibozeisahrani, ali se ne bih zakleo u svoje pamcenje.

E, da. Evo sta je STVARNI problem sa C++-om (setio se naknadno). Recimo da override-ujem constructor klase TFirstClass; neka mi neko kaze kako da izbegnem izvrsavanje nasledjenog constructor-a; NEMOGUCE, to je deo jezika (rekli mi ljudi koji znaju C++ mnogo bolje od mene). Ajde dobro, kazem ja, onda bar da li mogu da uticem na redosled izvrsavanja nasledjenih constructor-a; znate one dve varijante: ide prvo inherited constructor, pa neka moja inicijalizacija, a druga varijanta je PRVO moja inicijalizacija, pa onda inherited constructor. MA NEMA NI GOVORA; redosled je zacrtan ko puskom. Sve ovo vazi i za destructor-e.
A ko je imalo cackao po VCL-u mogao je videti svu mogucu kombinatoriku sa redosledom izvrsavanja nasledjenih constructor-a i destructor-a, ili cak i zaobilazenjem istih. Da nije te mogucnosti, odgovorno tvrdim da VCL-a ne bi ni bilo. Bar ne ovakvog...

Rajko
 
Odgovor na temu

tosys
fax
NS

Član broj: 38968
Poruke: 17
*.telekom.yu.

Sajt: tosys.co.sr


Profil

icon Re: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja15.11.2004. u 12:13 - pre 205 meseci
Zanimljivo, nisam kopa po VCL-u, ali Rajko, sad si me izintrigirao.
Josh samo da negde iskopam stari delphi 4 i pogledam...mada...
ne znam koliko mi je to pametno a i imam neku sredjenu trial ver
BC++B6 gde izgleda kad pokusam bilo koji pas file da kompiliram
ovaj javi gresku i neku glupost oko licence-a. Kontam da necu ja
tu moci bash mnogo...ali....videcemo vec...
Who am I!? I'm a writter, poet actually.
What kind of poetry? Computer poetry...if ya know wht I mean.
 
Odgovor na temu

[es] :: C/C++ programiranje :: (TIcon->SaveToFile) Kako snjimiti ico sa 256 boja

[ Pregleda: 3302 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.