X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9990cb50e4726561b6d5c210cb7da83c48c35ec0..65d8ef1e73ebb4906cb4a45acfb9e466413fd284:/src/msw/gdiimage.cpp diff --git a/src/msw/gdiimage.cpp b/src/msw/gdiimage.cpp index 87fb6add43..1b5000fa5e 100644 --- a/src/msw/gdiimage.cpp +++ b/src/msw/gdiimage.cpp @@ -184,7 +184,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxObject) // private functions // ---------------------------------------------------------------------------- -static wxSize GetHiconSize(HICON hicon); #endif // __MICROWIN__ @@ -209,7 +208,7 @@ bool wxGDIImage::FreeResource(bool WXUNUSED(force)) return TRUE; } -WXHANDLE wxGDIImage::GetResourceHandle() +WXHANDLE wxGDIImage::GetResourceHandle() const { return GetHandle(); } @@ -425,6 +424,27 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon, nameReal = name.BeforeLast(wxT(';')); } +#if 0 + // If we don't know what size icon we're looking for, + // try to find out what's there. + // Unfortunately this doesn't work, because ExtractIconEx + // will scale the icon to the 'desired' size, even if that + // size of icon isn't explicitly stored. So we would have + // to parse the icon file outselves. + if ( desiredWidth == -1 && + desiredHeight == -1) + { + // Try loading a large icon first + if ( ::ExtractIconEx(nameReal, iconIndex, &hicon, NULL, 1) == 1) + { + } + // Then try loading a small icon + else if ( ::ExtractIconEx(nameReal, iconIndex, NULL, &hicon, 1) == 1) + { + } + } + else +#endif // were we asked for a large icon? if ( desiredWidth == ::GetSystemMetrics(SM_CXICON) && desiredHeight == ::GetSystemMetrics(SM_CYICON) ) @@ -454,8 +474,8 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon, if ( !hicon ) { - // take any (the first one) icon from the file by default - hicon = ::ExtractIcon(wxGetInstance(), nameReal, 0 /* first */); + // take any size icon from the file by index + hicon = ::ExtractIcon(wxGetInstance(), nameReal, iconIndex); } if ( !hicon ) @@ -466,7 +486,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon, return FALSE; } - size = GetHiconSize(hicon); + size = wxGetHiconSize(hicon); #else // Win16 HICON hicon = ReadIconFile((wxChar *)name.c_str(), wxGetInstance(), @@ -539,7 +559,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, { wxT("wxICON_QUESTION"), IDI_QUESTION }, { wxT("wxICON_WARNING"), IDI_EXCLAMATION }, { wxT("wxICON_ERROR"), IDI_HAND }, - { wxT("wxICON_INFO"), IDI_ASTERISK }, + { wxT("wxICON_INFORMATION"), IDI_ASTERISK }, }; for ( size_t nIcon = 0; !hicon && nIcon < WXSIZEOF(stdIcons); nIcon++ ) @@ -551,7 +571,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, } } - wxSize size = GetHiconSize(hicon); + wxSize size = wxGetHiconSize(hicon); icon->SetSize(size.x, size.y); icon->SetHICON((WXHICON)hicon); @@ -563,7 +583,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, // private functions // ---------------------------------------------------------------------------- -static wxSize GetHiconSize(HICON hicon) +wxSize wxGetHiconSize(HICON hicon) { wxSize size(32, 32); // default