+bool wxStaticBitmap::Create(wxWindow *parent,
+ wxWindowID id,
+ const wxGDIImage& bitmap,
+ const wxPoint& pos,
+ const wxSize& size,
+ long style,
+ const wxString& name)
+{
+ if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
+ return false;
+
+ // we may have either bitmap or icon: if a bitmap with mask is passed, we
+ // will transform it to an icon ourselves because otherwise the mask will
+ // be ignored by Windows
+ m_isIcon = bitmap.IsKindOf(wxCLASSINFO(wxIcon));
+
+ wxGDIImage *image = ConvertImage( bitmap );
+ m_isIcon = image->IsKindOf( wxCLASSINFO(wxIcon) );
+
+ // create the native control
+ if ( !MSWCreateControl(wxT("STATIC"), wxEmptyString, pos, size) )
+ {
+ // control creation failed
+ return false;
+ }
+
+ // no need to delete the new image
+ SetImageNoCopy(image);
+
+ // GetBestSize will work properly now, so set the best size if needed
+ SetInitialSize(size);
+
+ // painting manually is reported not to work under Windows CE (see #10093),
+ // so don't do it there even if this probably means that alpha is not
+ // supported there -- but at least bitmaps without alpha appear correctly
+#ifndef __WXWINCE__
+ // Windows versions before XP (and even XP if the application has no
+ // manifest and so the old comctl32.dll is used) don't draw correctly the
+ // images with alpha channel so we need to draw them ourselves and it's
+ // easier to just always do it rather than check if we have an image with
+ // alpha or not
+ if ( wxTheApp->GetComCtl32Version() < 600 )
+ {
+ Connect(wxEVT_PAINT, wxPaintEventHandler(wxStaticBitmap::DoPaintManually));
+ }
+#endif // !__WXWINCE__
+
+ return true;