From a7c8ff3aaaa7903db4bd126cb3504a8bf441034e Mon Sep 17 00:00:00 2001 From: Yohann Ferreira Date: Wed, 26 Jan 2011 01:09:02 +0100 Subject: Made the windows app able to load .ico files at runtime. Now the icon extension is computed against the os. This means that the 'icons/mana' appIcon branding parameter will now load icons/mana.png files for unices and mac, and icons/mana.ico for Windows. Reviewed-by: Trapdoor. Resolves: Mana-Mantis: #135. --- src/client.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 0039ce025..d17ea73bc 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -352,15 +352,30 @@ Client::Client(const Options &options): //resman->selectSkin(); + std::string iconFile = branding.getValue("appIcon", "icons/mana"); +#ifdef WIN32 + iconFile += ".ico"; +#else + iconFile += ".png"; +#endif + iconFile = resman->getPath(iconFile); + logger->log("Loading icon from file: %s", iconFile.c_str()); + #ifdef WIN32 static SDL_SysWMinfo pInfo; SDL_GetWMInfo(&pInfo); - HICON icon = LoadIcon(GetModuleHandle(NULL), "A"); + // Attempt to load icon from .ico file + HICON icon = (HICON) LoadImage(NULL, + iconFile.c_str(), + IMAGE_ICON, 64, 64, LR_LOADFROMFILE); + // If it's failing, we load the default resource file. + if (!icon) + icon = LoadIcon(GetModuleHandle(NULL), "A"); + if (icon) SetClassLong(pInfo.window, GCL_HICON, (LONG) icon); #else - mIcon = IMG_Load(resman->getPath( - branding.getValue("appIcon", "icons/manaplus.png")).c_str()); + mIcon = IMG_Load(iconFile.c_str()); if (mIcon) { SDL_SetAlpha(mIcon, SDL_SRCALPHA, SDL_ALPHA_OPAQUE); -- cgit v1.2.3-70-g09d2