void wxStaticBitmap::SetImage( const wxGDIImage& rBitmap ) { int nX = 0; int nY = 0; int nWidth = 0; int nHeight = 0; Free(); ::WinSendMsg( GetHwnd() ,SM_SETHANDLE ,MPFROMHWND(rBitmap.GetHandle()) ,NULL ); m_pImage = ConvertImage(rBitmap); GetPosition(&nX, &nY); GetSize(&nWidth, &nHeight); // Convert to OS/2 coordinate system nY = wxWindow::GetOS2ParentHeight(GetParent()) - nY - nHeight; RECTL vRect; vRect.xLeft = nX; vRect.yTop = nY + nHeight; vRect.xRight = nX + nWidth; vRect.yBottom = nY; ::WinInvalidateRect(GetHwndOf(GetParent()), &vRect, TRUE); }
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(CLASSINFO(wxIcon)); wxGDIImage *image = ConvertImage( bitmap ); m_isIcon = image->IsKindOf( CLASSINFO(wxIcon) ); // create the native control if ( !MSWCreateControl(_T("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); return true; }
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(CLASSINFO(wxIcon)); wxGDIImage *image = ConvertImage( bitmap ); m_isIcon = image->IsKindOf( CLASSINFO(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; }
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(CLASSINFO(wxIcon)); wxGDIImage *image = ConvertImage( bitmap ); m_isIcon = image->IsKindOf( CLASSINFO(wxIcon) ); // create the native control if ( !MSWCreateControl(_T("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); // Win9x and 2000 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 ( wxGetWinVersion() <= wxWinVersion_2000 ) { Connect(wxEVT_PAINT, wxPaintEventHandler(wxStaticBitmap::DoPaintManually)); } return true; }
bool wxStaticBitmap::Create( wxWindow* pParent, wxWindowID nId, const wxGDIImage& rBitmap, const wxPoint& rPos, const wxSize& WXUNUSED(rSize), long lStyle, const wxString& rName ) { ERRORID vError; wxString sError; Init(); SetName(rName); if (pParent) pParent->AddChild(this); if (nId == -1) m_windowId = (int)NewControlId(); else m_windowId = nId; m_windowStyle = lStyle; int nX= rPos.x; int nY = rPos.y; char zId[16]; m_windowStyle = lStyle; m_bIsIcon = rBitmap.IsKindOf(CLASSINFO(wxIcon)); // // For now we only support an ICON // int nWinstyle = SS_ICON; m_hWnd = (WXHWND)::WinCreateWindow( pParent->GetHWND() ,(PSZ)wxCanvasClassName ,zId ,nWinstyle | WS_VISIBLE ,0,0,0,0 ,pParent->GetHWND() ,HWND_TOP ,m_windowId ,NULL ,NULL ); if (!m_hWnd) { vError = ::WinGetLastError(wxGetInstance()); sError = wxPMErrorToStr(vError); return false; } wxCHECK_MSG( m_hWnd, false, wxT("Failed to create static bitmap") ); m_pImage = ConvertImage(rBitmap); ::WinSendMsg( m_hWnd, SM_SETHANDLE, MPFROMHWND(rBitmap.GetHandle()), (MPARAM)0); // Subclass again for purposes of dialog editing mode SubclassWin(m_hWnd); SetSize(nX, nY, m_pImage->GetWidth(), m_pImage->GetHeight()); return true; } // end of wxStaticBitmap::Create