diff --git a/include/wx/msw/enhmeta.h b/include/wx/msw/enhmeta.h index 2e894bbbb5..264cccb188 100644 --- a/include/wx/msw/enhmeta.h +++ b/include/wx/msw/enhmeta.h @@ -87,6 +87,10 @@ public: int width = 0, int height = 0, const wxString& description = wxEmptyString); + // obtain a pointer to the new metafile (caller should delete it) + wxEnhMetaFile *Close(); + +private: DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC) }; diff --git a/src/msw/enhmeta.cpp b/src/msw/enhmeta.cpp index d2c39001f7..a3931c976f 100644 --- a/src/msw/enhmeta.cpp +++ b/src/msw/enhmeta.cpp @@ -209,7 +209,7 @@ bool wxEnhMetaFile::SetClipboard(int WXUNUSED(width), int WXUNUSED(height)) } // ---------------------------------------------------------------------------- -// wxEnhMetaFileDC +// wxEnhMetaFileDCImpl // ---------------------------------------------------------------------------- class wxEnhMetaFileDCImpl : public wxMSWDCImpl @@ -233,24 +233,11 @@ private: }; -IMPLEMENT_ABSTRACT_CLASS(wxEnhMetaFileDC, wxDC) - -wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename, - int width, int height, - const wxString& description) - : wxDC(new wxEnhMetaFileDCImpl(this, - filename, - width, height, - description)) -{ -} - - wxEnhMetaFileDCImpl::wxEnhMetaFileDCImpl( wxEnhMetaFileDC* owner, const wxString& filename, int width, int height, const wxString& description ) - : wxMSWDCImpl( owner ) + : wxMSWDCImpl( owner ) { m_width = width; m_height = height; @@ -315,6 +302,31 @@ wxEnhMetaFileDCImpl::~wxEnhMetaFileDCImpl() m_hDC = 0; } +// ---------------------------------------------------------------------------- +// wxEnhMetaFileDC +// ---------------------------------------------------------------------------- + +IMPLEMENT_ABSTRACT_CLASS(wxEnhMetaFileDC, wxDC) + +wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename, + int width, int height, + const wxString& description) + : wxDC(new wxEnhMetaFileDCImpl(this, + filename, + width, height, + description)) +{ +} + +wxEnhMetaFile *wxEnhMetaFileDC::Close() +{ + wxEnhMetaFileDCImpl * const + impl = wx_static_cast(wxEnhMetaFileDCImpl *, GetImpl()); + wxCHECK_MSG( impl, NULL, _T("no wxEnhMetaFileDC implementation") ); + + return impl->Close(); +} + #if wxUSE_DRAG_AND_DROP // ----------------------------------------------------------------------------