X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70d0f9359e89f2d593ec831f7d78db6dbca27fcd..dab73021272104a5997f43658831658d8a783474:/src/msw/icon.cpp diff --git a/src/msw/icon.cpp b/src/msw/icon.cpp index 4e6eccd235..c0070fc713 100644 --- a/src/msw/icon.cpp +++ b/src/msw/icon.cpp @@ -5,8 +5,8 @@ // Modified by: 20.11.99 (VZ): don't derive from wxBitmap any more // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -40,16 +40,11 @@ #include "wx/msw/private.h" -#if wxUSE_RESOURCE_LOADING_IN_MSW - #include "wx/msw/curico.h" - #include "wx/msw/curicop.h" -#endif - // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxIconBase) +IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxGDIObject) // ============================================================================ // implementation @@ -97,37 +92,7 @@ wxIcon::~wxIcon() void wxIcon::CopyFromBitmap(const wxBitmap& bmp) { #ifndef __WXMICROWIN__ -#ifdef __WIN32__ - wxMask *mask = bmp.GetMask(); - if ( !mask ) - { - // we must have a mask for an icon, so even if it's probably incorrect, - // do create it (grey is the "standard" transparent colour) - mask = new wxMask(bmp, *wxLIGHT_GREY); - } - - ICONINFO iconInfo; - iconInfo.fIcon = TRUE; // we want an icon, not a cursor - iconInfo.hbmMask = wxInvertMask((HBITMAP)mask->GetMaskBitmap()); - iconInfo.hbmColor = GetHbitmapOf(bmp); - - /* GRG: black out the transparent area to preserve background - * colour, because Windows blits the original bitmap using - * SRCINVERT (XOR) after applying the mask to the dest rect. - */ - HDC dcSrc = ::CreateCompatibleDC(NULL); - HDC dcDst = ::CreateCompatibleDC(NULL); - SelectObject(dcSrc, (HBITMAP)mask->GetMaskBitmap()); - SelectObject(dcDst, iconInfo.hbmColor); - - BitBlt(dcDst, 0, 0, bmp.GetWidth(), bmp.GetHeight(), dcSrc, 0, 0, SRCAND); - - SelectObject(dcDst, NULL); - SelectObject(dcSrc, NULL); - DeleteDC(dcDst); - DeleteDC(dcSrc); - - HICON hicon = ::CreateIconIndirect(&iconInfo); + HICON hicon = wxBitmapToHICON(bmp); if ( !hicon ) { wxLogLastError(wxT("CreateIconIndirect")); @@ -137,30 +102,7 @@ void wxIcon::CopyFromBitmap(const wxBitmap& bmp) SetHICON((WXHICON)hicon); SetSize(bmp.GetWidth(), bmp.GetHeight()); } - - if ( !bmp.GetMask() ) - { - // we created the mask, now delete it - delete mask; - } - - // delete the inverted mask bitmap we created as well - ::DeleteObject(iconInfo.hbmMask); -#else // Win16 - // there are some functions in curico.cpp which probably could be used - // here... - // This probably doesn't work. - HBITMAP hBitmap = (HBITMAP) bmp.GetHBITMAP(); - HICON hIcon = MakeIconFromBitmap((HINSTANCE) wxGetInstance(), hBitmap); - if (hIcon) - { - SetHICON((WXHICON)hIcon); - SetSize(bmp.GetWidth(), bmp.GetHeight()); - } - -// wxFAIL_MSG("Bitmap to icon conversion (including use of XPMs for icons) not implemented"); -#endif // Win32/16 -#endif +#endif // __WXMICROWIN__ } void wxIcon::CreateIconFromXpm(const char **data)