Miten saisin liitettyä iconin exeen? Kieli on c++, jos tarvitsee tietää.
Winkkarissa Visual Studiolla onnistuu, kun tekee ikoniresurssin projektiin.
cheers,
zdax
En käytä visual studiota... Eikö siis ole mitään ohjelmaa, millä pystyis lisäämään iconin?
Tällä ohjelmalla voisi onnistua:
Tuo vaikuttais ihan hyvältä, nyt pitää etsiä vaan joku tutoriaali tohon softaan...
Ei siihe mitään tutoriaalia tarvi, se on niin yksinkertanen.
Menet vaan Action -> Replace Icon ja sitten sen jälkeen tallenat exen uudelleen.
Kannattaa kuitenkin muistaa se että jos exe on jo pakattu jollain ohjelmalla se pitää ensin purkaa ja sitten vasta ikonin voi vaihtaa. Ja sitten tietenkin ikonin vaihtamisen jälkeen se kannattaa pakata uudelleen. Ja muutenkin kannattaa pakata vaikka ei olisikaan aikaisemmin pakattu (C++-kääntäjät tuottaa tietenkin pakkaamattomia exejä, ainakin mingw/GCC, mutta esim. Coolbasic tekee UPX pakkauksen exeille).
0_o
Emmä ainakaan mingw:n kanssa joudu mitään kikkailemaan.
resource.h
#ifndef RESOURCE_H_INCLUDED #define RESOURCE_H_INCLUDED #define IDI_MAINICON 201 #endif // RESOURCE_H_INCLUDED
res.rc
#include "resource.h" IDI_MAINICON ICON "mainicon.ico"
Antti Laaksonen kirjoitti:
Tällä ohjelmalla voisi onnistua:
Tota noin, tein QB64:llä "Hello world"-ohjelman ja käänsin sen. Ohjelmalla ei ole varsinaista iconia, mutta ikkunan yläreunassa on QB64:n logo. Voiko tätä muuttaa mitenkään järkevästi?
Aivan samaisella resurssieditorilla senkin pitäisi onnistua.
Oletko ihan varma? Resource Hackeriin ei nimittäin ilmesty mitään kun avaan ohjelman sillä (toisin kuin monilla muilla tiedostoilla).
En ole varma. :) On tietenkin mahdollista, että QB64-ohjelma luo kuvakkeen vasta ajettaessa, jolloin se ei ole resurssi. Sitä voi ehkä muokata heksaeditorilla tai ehkä ei, joka tapauksessa tämä ei liene vaivan arvoista.
Sain sen exen iconin muutettua, mutta mitenkäs sitten se ikkunan laidassa olevan iconin vaihto? onko siihen olemassa jotain samantyylistä koodia kuin tuolla ylempänä oli siihen exen iconin vaihtoon?
Käytät varmaan SDL:ää
SDL_Surface* icon = SDL_LoadBMP(iconName)) SDL_WM_SetIcon(icon, NULL);
Jos taas itse luot ikkunan CreateWindowilla tai vastaavalla, niin ikkunan rekisteröinnissä:
WNDCLASSEX wincl; .... wincl.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MAINICON)); wincl.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_MAINICON), IMAGE_ICON, 16, 16, 0); ... RegisterClassEx (&wincl);
Juu, käytän sdl:ää
Hmm tuli vaan mieleen, että eikös tuo SDL_LoadBMP lataa .bmp-tiedoston, kun taas se iconi on muodossa .ico? :O No pitääpi testata.
Kuvaksihan se sen lataa eikä bmp:ksi. SDL_Surfaceen tallennetaan SDL:n ruokavalion mukainen data joka aukeaa juurikin noilla kyseisillä funktiolla. Että eipä siinä ole paljoa väliä onko se ico vai bmp. Kuvia ne kumpikin on. (Tietenkään et voi avata ico:a bmp:n avaukseen tarkoitettulla funktiolla ;))
No tuohan funktio on tarkoitettu juurikin .bmp-kuvien lataamiseen...
MItenkäs olisi Load_IMG();funktio. tätä käytän nytkin kuvien lataamiseen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.