use wxBitmapToHICON/CURSOR()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19721 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -40,11 +40,6 @@
|
||||
|
||||
#include "wx/msw/private.h"
|
||||
|
||||
#if wxUSE_RESOURCE_LOADING_IN_MSW
|
||||
#include "wx/msw/curico.h"
|
||||
#include "wx/msw/curicop.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWin macros
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -97,36 +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);
|
||||
|
||||
// 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.
|
||||
{
|
||||
MemoryHDC dcSrc, dcDst;
|
||||
SelectInHDC selectMask(dcSrc, (HBITMAP)mask->GetMaskBitmap()),
|
||||
selectBitmap(dcDst, iconInfo.hbmColor);
|
||||
|
||||
if ( !::BitBlt(dcDst, 0, 0, bmp.GetWidth(), bmp.GetHeight(),
|
||||
dcSrc, 0, 0, SRCAND) )
|
||||
{
|
||||
wxLogLastError(_T("BitBlt"));
|
||||
}
|
||||
}
|
||||
|
||||
HICON hicon = ::CreateIconIndirect(&iconInfo);
|
||||
HICON hicon = wxBitmapToHICON(bmp);
|
||||
if ( !hicon )
|
||||
{
|
||||
wxLogLastError(wxT("CreateIconIndirect"));
|
||||
@@ -136,29 +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
|
||||
/*
|
||||
// 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)
|
||||
|
Reference in New Issue
Block a user