I have added a .rc file to my project with just the following:
IDI_MAIN_ICON ICON \"..\\\\..\\\\icon_artwork\\\\windows_icons\\\\project.
As it stands, no. SDL for some reason eats the icon for the actual application window. However you can use WINDOWS specific code to fix this. Keep in mind that this is not portable.
#if defined(_WIN32) && defined(GCL_HICON)
void setWindowsIcon(SDL_Window *sdlWindow) {
HINSTANCE handle = ::GetModuleHandle(nullptr);
HICON icon = ::LoadIcon(handle, "IDI_MAIN_ICON");
if(icon != nullptr){
SDL_SysWMinfo wminfo;
SDL_VERSION(&wminfo.version);
if(SDL_GetWindowWMInfo(sdlWindow,&wminfo) == 1){
HWND hwnd = wminfo.info.win.window;
::SetClassLong(hwnd, GCL_HICON, reinterpret_cast<LONG>(icon));
}
}
}
#endif
You should be able to get a SDL_Surface from a .png file using
SDL_Surface *IMG_Load(const char *file)
then pass it to your SDL_SetWindowIcon(SDL_Window* window, SDL_Surface* icon)
method.
I don't think the IMG_Load(...)
method takes .ico files though, but a 32x32 .png version of your icon would be a good compromise...
Not ideal but the best workaround I can think of ;)