Sign in to follow this  

changing the .ico of exe

This topic is 3870 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, I am using Microsoft Visual C++ 2005 Express Edition and SDL for my program and I want to change its icon. SDL_WM_SetIcon seems to only change the icon at the taskbar or something.

Share this post


Link to post
Share on other sites
You need to embed an icon resource with the correct ID into your executable. You will need to use the resource compiler to do this. Luckily, DevStudio can do a lot of this for you. Use the Project->Add Resource menu item (or something along those lines), select the icon resource type, create the icon and it should all just work next time you compile the project.

Skizz

Share this post


Link to post
Share on other sites
Hello LordKass

Well i am not to sure about SDL have not used it in a long time however there are way you can change that.

If you created your own window it is easy enough to do your just have to change a few minor things when you register the class but useing sdl if im not mistaken you do not create the window yourself so.

if you have access to the windows handle however this can still be done.

a windows handle is define as so HWND HandlesName.

if you have access the the instance do this
HICON hicon = LoadIcon(hInstance,"The Icon file");
else use this line it may however generate a warning

HICON hicon = LoadIcon((HINSTANCE) GetWindowLong(WindowsHandle,GWL_HINSTANCE),"The Icon file");

SendMessage(WindowsHandle,WM_SETICON,ICON_BIG,(LPARAM)(HICON) hicon);
SendMessage(WindowsHandle,WM_SETICON,ICON_SMALL,(LPARAM)(HICON) hicon);

Do this only after the windows been created.
im not sure if this helps because you may not have access to the windows handle but hopefuly it does.


Edit: Note if you do not wish to use a resource editor for any reason this method will allow you to load from file.
Ps. do rate user that help you it lets them know tis appreceated!

Share this post


Link to post
Share on other sites
If you want to change the icon of your exe file in the explorer - you will have to write a simple resource file for that.

Unfortunately, Visual C++ 2005 Express Edition doesn't include the resource editor, so you will not be able to edit the resource file visually. However, it is very easy to write it by hand.

The main rule, that you should know, is that the program icon is the FIRST icon in the executables resources. You can have as many icons as want, but the first one will be the one that is shown in explorer.

So, the simplest possible resource file is this:

1 ICON "my_icon.ico"

Note, that the icon file name (the thing inside quotes) can be anything you want.

Now, to make it work - create a file with the *.rc extension (you can use Notepad for that) and paste that line in this RC file. Now, place the rc file into your projects source directory. In VC++ Solution Explorer, right-click on your project and choose to add the existing source file - select the RC file. You won't be able to edit the RC file in the VC++, but the file will be build automatically, and the icon will be shown correctly in explorer.

If you have some free time, you can read about the Windows resource files and the resource compiler here.

Share this post


Link to post
Share on other sites
Hmm i did not though about going about doing it that way. Well ill have to remmber that next time i see a resource question.

just wanted to say that was a great answer Paulius Maruska

:: nods nods :: and more practical then mine i over thought it yup ...

Share this post


Link to post
Share on other sites
Thanks everyone. The only thing i need now is changing the icon at the top left portion of the window.

Share this post


Link to post
Share on other sites
Quote:
Original post by LordKass
Thanks everyone. The only thing i need now is changing the icon at the top left portion of the window.


That's the same icon as the application icon. If you get the exe to appear with your icon in explorer then the icon in the top left should change as well. If it doesn't you may need to add an additional icon size to the ico file (the ico files contain several images of different sizes).

Skizz

Share this post


Link to post
Share on other sites
Quote:
Original post by Skizz
Quote:
Original post by LordKass
Thanks everyone. The only thing i need now is changing the icon at the top left portion of the window.


That's the same icon as the application icon. If you get the exe to appear with your icon in explorer then the icon in the top left should change as well. If it doesn't you may need to add an additional icon size to the ico file (the ico files contain several images of different sizes).

Skizz


How to add an additional icon size to the ico file then?

Share this post


Link to post
Share on other sites
Quote:
Original post by LordKass
Quote:
Original post by Skizz
Quote:
Original post by LordKass
Thanks everyone. The only thing i need now is changing the icon at the top left portion of the window.


That's the same icon as the application icon. If you get the exe to appear with your icon in explorer then the icon in the top left should change as well. If it doesn't you may need to add an additional icon size to the ico file (the ico files contain several images of different sizes).

Skizz


How to add an additional icon size to the ico file then?


How about an Icon Editor? Do a web search for that term and you'll get loads of apps that allow you to edit icons.

Skizz

Share this post


Link to post
Share on other sites
Quote:
Original post by Jouei
HICON hicon = LoadIcon((HINSTANCE) GetWindowLong(WindowsHandle,GWL_HINSTANCE),"The Icon file");


That's a really kludgy way of getting the app instance. The better way is to call GetModuleHandle(NULL).

Share this post


Link to post
Share on other sites
Quote:
Original post by LordKass
How to add an additional icon size to the ico file then?


The best tool I've ever used to edit icons is GIMP!
There is a nice Window version of GIMP. GIMP can edit icon files (*.ico). It interprets each icon in the ico file as layer, so by editing different layers of the icon file - you edit the different icons in the file. It is very easy to resize/change color settings on only a single layer in GIMP, that is why I call GIMP the best application for icon editing! ;)

Share this post


Link to post
Share on other sites
I already tried making different sizes or something and the icon still doesn't appear in the top left portion of the window. I used the program IcoFX.

Share this post


Link to post
Share on other sites
Well, for the Icon to appear in the top left corner of the window, using pure WinAPI, you would have to set the appropriate members of the window class structure. I could tell you how to do that, but you said you're using SDL and I know nothing about SDL...

Share this post


Link to post
Share on other sites

This topic is 3870 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this