From 1e8335b0b7a5984e1c22364f4c45435fe697ae75 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 22 Oct 1999 13:26:45 +0000 Subject: [PATCH] MSW compilation fixes (untested) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dataobj.h | 2 +- include/wx/msw/clipbrd.h | 2 +- include/wx/msw/ole/dataobj.h | 6 +++ src/msw/clipbrd.cpp | 78 ++++++++++++++---------------------- src/msw/ole/dataobj.cpp | 16 ++++---- 5 files changed, 47 insertions(+), 57 deletions(-) diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index 1d922a5c72..ae1a30c870 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -187,7 +187,7 @@ class WXDLLEXPORT wxDataObjectSimple : public wxDataObject public: // ctor takes the format we support, but it can also be set later with // SetFormat() - wxDataObjectSimple(const wxDataFormat& format = wxDataFormat(wxDF_INVALID)) + wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid) : m_format(format) { } diff --git a/include/wx/msw/clipbrd.h b/include/wx/msw/clipbrd.h index 67f9d9d4fb..bc4e18fdbe 100644 --- a/include/wx/msw/clipbrd.h +++ b/include/wx/msw/clipbrd.h @@ -79,7 +79,7 @@ public: virtual bool IsSupported( wxDataFormat format ); // fill data with data on the clipboard (if available) - virtual bool GetData( wxDataObject *data ); + virtual bool GetData( wxDataObject& data ); // clears wxTheClipboard and the system's clipboard if possible virtual void Clear(); diff --git a/include/wx/msw/ole/dataobj.h b/include/wx/msw/ole/dataobj.h index 123f390ede..31af6d7da8 100644 --- a/include/wx/msw/ole/dataobj.h +++ b/include/wx/msw/ole/dataobj.h @@ -39,9 +39,15 @@ public: // return TRUE if we support this format in "Get" direction bool IsSupportedFormat(const wxDataFormat& format) const; +#ifdef __WXDEBUG__ // function to return symbolic name of clipboard format (for debug messages) static const char *GetFormatName(wxDataFormat format); + #define wxGetFormatName(format) wxDataObject::GetFormatName(format) +#else // !Debug + #define wxGetFormatName(format) "" +#endif // Debug/!Debug + private: IDataObject *m_pIDataObject; // pointer to the COM interface }; diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp index d9ca91ec44..ee67329e42 100644 --- a/src/msw/clipbrd.cpp +++ b/src/msw/clipbrd.cpp @@ -578,10 +578,8 @@ bool wxClipboard::IsSupported( wxDataFormat format ) return wxIsClipboardFormatAvailable(format); } -bool wxClipboard::GetData( wxDataObject *data ) +bool wxClipboard::GetData( wxDataObject& data ) { - wxCHECK_MSG( data, FALSE, wxT("invalid data object") ); - #if wxUSE_OLE_CLIPBOARD IDataObject *pDataObject = NULL; HRESULT hr = OleGetClipboard(&pDataObject); @@ -593,7 +591,7 @@ bool wxClipboard::GetData( wxDataObject *data ) } // build the list of supported formats - size_t nFormats = data->GetFormatCount(wxDataObject::Set); + size_t nFormats = data.GetFormatCount(wxDataObject::Set); wxDataFormat format, *formats; if ( nFormats == 1 ) { @@ -606,7 +604,7 @@ bool wxClipboard::GetData( wxDataObject *data ) formats = new wxDataFormat[nFormats]; } - data->GetAllFormats(formats, wxDataObject::Set); + data.GetAllFormats(formats, wxDataObject::Set); // get the format enumerator bool result = FALSE; @@ -693,7 +691,7 @@ bool wxClipboard::GetData( wxDataObject *data ) if ( SUCCEEDED(hr) ) { // pass the data to the data object - hr = data->GetInterface()->SetData(&formatEtc, &medium, TRUE); + hr = data.GetInterface()->SetData(&formatEtc, &medium, TRUE); if ( FAILED(hr) ) { wxLogDebug(wxT("Failed to set data in wxIDataObject")); @@ -719,72 +717,56 @@ bool wxClipboard::GetData( wxDataObject *data ) #elif wxUSE_DATAOBJ wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") ); - wxDataFormat format = data->GetFormat(); + wxDataFormat format = data.GetFormat(); switch ( format ) { case wxDF_TEXT: case wxDF_OEMTEXT: { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - char* s = (char*) wxGetClipboardData(format); - if ( s ) - { - textDataObject->SetText(s); - delete[] s; - return TRUE; - } - else + wxTextDataObject& textDataObject = (wxTextDataObject &)data; + char* s = (char*)wxGetClipboardData(format); + if ( !s ) return FALSE; + + textDataObject.SetText(s); + delete [] s; + + return TRUE; } case wxDF_BITMAP: case wxDF_DIB: { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject *)data; + wxBitmapDataObject& bitmapDataObject = (wxBitmapDataObject &)data; wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data->GetFormat()); - if (bitmap) - { - bitmapDataObject->SetBitmap(* bitmap); - delete bitmap; - return TRUE; - } - else + if ( !bitmap ) return FALSE; + + bitmapDataObject.SetBitmap(*bitmap); + delete bitmap; + + return TRUE; } #if wxUSE_METAFILE case wxDF_METAFILE: { - wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject *)data; + wxMetafileDataObject& metaFileDataObject = (wxMetafileDataObject &)data; wxMetafile* metaFile = (wxMetafile *)wxGetClipboardData(wxDF_METAFILE); - if (metaFile) - { - metaFileDataObject->SetMetafile(*metaFile); - delete metaFile; - return TRUE; - } - else + if ( !metaFile ) return FALSE; - } -#endif - default: - { - long len; - void *buf = wxGetClipboardData(format, &len); - if ( buf ) - { - // FIXME this is for testing only!! - ((wxPrivateDataObject *)data)->SetData(buf, len); - free(buf); - return TRUE; - } - } + metaFileDataObject.SetMetafile(*metaFile); + delete metaFile; - return FALSE; + return TRUE; + } +#endif // wxUSE_METAFILE } #else // !wxUSE_DATAOBJ + wxFAIL_MSG( wxT("no clipboard implementation") ); +#endif // wxUSE_OLE_CLIPBOARD/wxUSE_DATAOBJ + return FALSE; -#endif // wxUSE_DATAOBJ/!wxUSE_DATAOBJ } #else diff --git a/src/msw/ole/dataobj.cpp b/src/msw/ole/dataobj.cpp index 30f46b1cf0..3b4bc096e9 100644 --- a/src/msw/ole/dataobj.cpp +++ b/src/msw/ole/dataobj.cpp @@ -56,7 +56,9 @@ #ifdef __WXDEBUG__ static const wxChar *GetTymedName(DWORD tymed); -#endif // Debug +#else // !Debug + #define GetTymedName(tymed) "" +#endif // Debug/!Debug // to be moved into wx/msw/bitmap.h extern size_t wxConvertBitmapToDIB(BITMAPINFO *pbi, const wxBitmap& bitmap); @@ -531,15 +533,13 @@ STDMETHODIMP wxIDataObject::QueryGetData(FORMATETC *pformatetc) // and now check the type of data requested wxDataFormat format = pformatetc->cfFormat; if ( m_pDataObject->IsSupportedFormat(format) ) { -#ifdef __WXDEBUG__ wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::QueryGetData: %s ok"), - wxDataObject::GetFormatName(format)); -#endif // Debug + wxGetFormatName(format)); } else { wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::QueryGetData: %s unsupported"), - wxDataObject::GetFormatName(format)); + wxGetFormatName(format)); return DV_E_FORMATETC; } @@ -549,13 +549,11 @@ STDMETHODIMP wxIDataObject::QueryGetData(FORMATETC *pformatetc) if ( (format == wxDF_BITMAP && !(tymed & TYMED_GDI)) && !(tymed & TYMED_HGLOBAL) ) { // it's not what we're waiting for -#ifdef __WXDEBUG__ wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::QueryGetData: %s != %s"), GetTymedName(tymed), GetTymedName(format == wxDF_BITMAP ? TYMED_GDI : TYMED_HGLOBAL)); -#endif // Debug return DV_E_TYMED; } @@ -668,6 +666,8 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format) const } } +#ifdef __WXDEBUG__ + const char *wxDataObject::GetFormatName(wxDataFormat format) { // case 'xxx' is not a valid value for switch of enum 'wxDataFormat' @@ -703,6 +703,8 @@ const char *wxDataObject::GetFormatName(wxDataFormat format) #endif // VC++ } +#endif // Debug + // ---------------------------------------------------------------------------- // wxBitmapDataObject supports CF_DIB format // ---------------------------------------------------------------------------- -- 2.45.2