MSW compilation fixes (untested)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -187,7 +187,7 @@ class WXDLLEXPORT wxDataObjectSimple : public wxDataObject
|
|||||||
public:
|
public:
|
||||||
// ctor takes the format we support, but it can also be set later with
|
// ctor takes the format we support, but it can also be set later with
|
||||||
// SetFormat()
|
// SetFormat()
|
||||||
wxDataObjectSimple(const wxDataFormat& format = wxDataFormat(wxDF_INVALID))
|
wxDataObjectSimple(const wxDataFormat& format = wxFormatInvalid)
|
||||||
: m_format(format)
|
: m_format(format)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@@ -79,7 +79,7 @@ public:
|
|||||||
virtual bool IsSupported( wxDataFormat format );
|
virtual bool IsSupported( wxDataFormat format );
|
||||||
|
|
||||||
// fill data with data on the clipboard (if available)
|
// 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
|
// clears wxTheClipboard and the system's clipboard if possible
|
||||||
virtual void Clear();
|
virtual void Clear();
|
||||||
|
@@ -39,9 +39,15 @@ public:
|
|||||||
// return TRUE if we support this format in "Get" direction
|
// return TRUE if we support this format in "Get" direction
|
||||||
bool IsSupportedFormat(const wxDataFormat& format) const;
|
bool IsSupportedFormat(const wxDataFormat& format) const;
|
||||||
|
|
||||||
|
#ifdef __WXDEBUG__
|
||||||
// function to return symbolic name of clipboard format (for debug messages)
|
// function to return symbolic name of clipboard format (for debug messages)
|
||||||
static const char *GetFormatName(wxDataFormat format);
|
static const char *GetFormatName(wxDataFormat format);
|
||||||
|
|
||||||
|
#define wxGetFormatName(format) wxDataObject::GetFormatName(format)
|
||||||
|
#else // !Debug
|
||||||
|
#define wxGetFormatName(format) ""
|
||||||
|
#endif // Debug/!Debug
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IDataObject *m_pIDataObject; // pointer to the COM interface
|
IDataObject *m_pIDataObject; // pointer to the COM interface
|
||||||
};
|
};
|
||||||
|
@@ -578,10 +578,8 @@ bool wxClipboard::IsSupported( wxDataFormat format )
|
|||||||
return wxIsClipboardFormatAvailable(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
|
#if wxUSE_OLE_CLIPBOARD
|
||||||
IDataObject *pDataObject = NULL;
|
IDataObject *pDataObject = NULL;
|
||||||
HRESULT hr = OleGetClipboard(&pDataObject);
|
HRESULT hr = OleGetClipboard(&pDataObject);
|
||||||
@@ -593,7 +591,7 @@ bool wxClipboard::GetData( wxDataObject *data )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// build the list of supported formats
|
// build the list of supported formats
|
||||||
size_t nFormats = data->GetFormatCount(wxDataObject::Set);
|
size_t nFormats = data.GetFormatCount(wxDataObject::Set);
|
||||||
wxDataFormat format, *formats;
|
wxDataFormat format, *formats;
|
||||||
if ( nFormats == 1 )
|
if ( nFormats == 1 )
|
||||||
{
|
{
|
||||||
@@ -606,7 +604,7 @@ bool wxClipboard::GetData( wxDataObject *data )
|
|||||||
formats = new wxDataFormat[nFormats];
|
formats = new wxDataFormat[nFormats];
|
||||||
}
|
}
|
||||||
|
|
||||||
data->GetAllFormats(formats, wxDataObject::Set);
|
data.GetAllFormats(formats, wxDataObject::Set);
|
||||||
|
|
||||||
// get the format enumerator
|
// get the format enumerator
|
||||||
bool result = FALSE;
|
bool result = FALSE;
|
||||||
@@ -693,7 +691,7 @@ bool wxClipboard::GetData( wxDataObject *data )
|
|||||||
if ( SUCCEEDED(hr) )
|
if ( SUCCEEDED(hr) )
|
||||||
{
|
{
|
||||||
// pass the data to the data object
|
// pass the data to the data object
|
||||||
hr = data->GetInterface()->SetData(&formatEtc, &medium, TRUE);
|
hr = data.GetInterface()->SetData(&formatEtc, &medium, TRUE);
|
||||||
if ( FAILED(hr) )
|
if ( FAILED(hr) )
|
||||||
{
|
{
|
||||||
wxLogDebug(wxT("Failed to set data in wxIDataObject"));
|
wxLogDebug(wxT("Failed to set data in wxIDataObject"));
|
||||||
@@ -719,72 +717,56 @@ bool wxClipboard::GetData( wxDataObject *data )
|
|||||||
#elif wxUSE_DATAOBJ
|
#elif wxUSE_DATAOBJ
|
||||||
wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") );
|
wxCHECK_MSG( wxIsClipboardOpened(), FALSE, wxT("clipboard not open") );
|
||||||
|
|
||||||
wxDataFormat format = data->GetFormat();
|
wxDataFormat format = data.GetFormat();
|
||||||
switch ( format )
|
switch ( format )
|
||||||
{
|
{
|
||||||
case wxDF_TEXT:
|
case wxDF_TEXT:
|
||||||
case wxDF_OEMTEXT:
|
case wxDF_OEMTEXT:
|
||||||
{
|
{
|
||||||
wxTextDataObject* textDataObject = (wxTextDataObject*) data;
|
wxTextDataObject& textDataObject = (wxTextDataObject &)data;
|
||||||
char* s = (char*) wxGetClipboardData(format);
|
char* s = (char*)wxGetClipboardData(format);
|
||||||
if ( s )
|
if ( !s )
|
||||||
{
|
|
||||||
textDataObject->SetText(s);
|
|
||||||
delete[] s;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
textDataObject.SetText(s);
|
||||||
|
delete [] s;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
case wxDF_BITMAP:
|
case wxDF_BITMAP:
|
||||||
case wxDF_DIB:
|
case wxDF_DIB:
|
||||||
{
|
{
|
||||||
wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject *)data;
|
wxBitmapDataObject& bitmapDataObject = (wxBitmapDataObject &)data;
|
||||||
wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data->GetFormat());
|
wxBitmap* bitmap = (wxBitmap *)wxGetClipboardData(data->GetFormat());
|
||||||
if (bitmap)
|
if ( !bitmap )
|
||||||
{
|
|
||||||
bitmapDataObject->SetBitmap(* bitmap);
|
|
||||||
delete bitmap;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
bitmapDataObject.SetBitmap(*bitmap);
|
||||||
|
delete bitmap;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
#if wxUSE_METAFILE
|
#if wxUSE_METAFILE
|
||||||
case wxDF_METAFILE:
|
case wxDF_METAFILE:
|
||||||
{
|
{
|
||||||
wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject *)data;
|
wxMetafileDataObject& metaFileDataObject = (wxMetafileDataObject &)data;
|
||||||
wxMetafile* metaFile = (wxMetafile *)wxGetClipboardData(wxDF_METAFILE);
|
wxMetafile* metaFile = (wxMetafile *)wxGetClipboardData(wxDF_METAFILE);
|
||||||
if (metaFile)
|
if ( !metaFile )
|
||||||
{
|
|
||||||
metaFileDataObject->SetMetafile(*metaFile);
|
|
||||||
delete metaFile;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
metaFileDataObject.SetMetafile(*metaFile);
|
||||||
|
delete metaFile;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif // wxUSE_METAFILE
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
#else // !wxUSE_DATAOBJ
|
#else // !wxUSE_DATAOBJ
|
||||||
|
wxFAIL_MSG( wxT("no clipboard implementation") );
|
||||||
|
#endif // wxUSE_OLE_CLIPBOARD/wxUSE_DATAOBJ
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
#endif // wxUSE_DATAOBJ/!wxUSE_DATAOBJ
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@@ -56,7 +56,9 @@
|
|||||||
|
|
||||||
#ifdef __WXDEBUG__
|
#ifdef __WXDEBUG__
|
||||||
static const wxChar *GetTymedName(DWORD tymed);
|
static const wxChar *GetTymedName(DWORD tymed);
|
||||||
#endif // Debug
|
#else // !Debug
|
||||||
|
#define GetTymedName(tymed) ""
|
||||||
|
#endif // Debug/!Debug
|
||||||
|
|
||||||
// to be moved into wx/msw/bitmap.h
|
// to be moved into wx/msw/bitmap.h
|
||||||
extern size_t wxConvertBitmapToDIB(BITMAPINFO *pbi, const wxBitmap& bitmap);
|
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
|
// and now check the type of data requested
|
||||||
wxDataFormat format = pformatetc->cfFormat;
|
wxDataFormat format = pformatetc->cfFormat;
|
||||||
if ( m_pDataObject->IsSupportedFormat(format) ) {
|
if ( m_pDataObject->IsSupportedFormat(format) ) {
|
||||||
#ifdef __WXDEBUG__
|
|
||||||
wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::QueryGetData: %s ok"),
|
wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::QueryGetData: %s ok"),
|
||||||
wxDataObject::GetFormatName(format));
|
wxGetFormatName(format));
|
||||||
#endif // Debug
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wxLogTrace(wxTRACE_OleCalls,
|
wxLogTrace(wxTRACE_OleCalls,
|
||||||
wxT("wxIDataObject::QueryGetData: %s unsupported"),
|
wxT("wxIDataObject::QueryGetData: %s unsupported"),
|
||||||
wxDataObject::GetFormatName(format));
|
wxGetFormatName(format));
|
||||||
|
|
||||||
return DV_E_FORMATETC;
|
return DV_E_FORMATETC;
|
||||||
}
|
}
|
||||||
@@ -549,13 +549,11 @@ STDMETHODIMP wxIDataObject::QueryGetData(FORMATETC *pformatetc)
|
|||||||
if ( (format == wxDF_BITMAP && !(tymed & TYMED_GDI)) &&
|
if ( (format == wxDF_BITMAP && !(tymed & TYMED_GDI)) &&
|
||||||
!(tymed & TYMED_HGLOBAL) ) {
|
!(tymed & TYMED_HGLOBAL) ) {
|
||||||
// it's not what we're waiting for
|
// it's not what we're waiting for
|
||||||
#ifdef __WXDEBUG__
|
|
||||||
wxLogTrace(wxTRACE_OleCalls,
|
wxLogTrace(wxTRACE_OleCalls,
|
||||||
wxT("wxIDataObject::QueryGetData: %s != %s"),
|
wxT("wxIDataObject::QueryGetData: %s != %s"),
|
||||||
GetTymedName(tymed),
|
GetTymedName(tymed),
|
||||||
GetTymedName(format == wxDF_BITMAP ? TYMED_GDI
|
GetTymedName(format == wxDF_BITMAP ? TYMED_GDI
|
||||||
: TYMED_HGLOBAL));
|
: TYMED_HGLOBAL));
|
||||||
#endif // Debug
|
|
||||||
|
|
||||||
return DV_E_TYMED;
|
return DV_E_TYMED;
|
||||||
}
|
}
|
||||||
@@ -668,6 +666,8 @@ bool wxDataObject::IsSupportedFormat(const wxDataFormat& format) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __WXDEBUG__
|
||||||
|
|
||||||
const char *wxDataObject::GetFormatName(wxDataFormat format)
|
const char *wxDataObject::GetFormatName(wxDataFormat format)
|
||||||
{
|
{
|
||||||
// case 'xxx' is not a valid value for switch of enum 'wxDataFormat'
|
// 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 // VC++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // Debug
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxBitmapDataObject supports CF_DIB format
|
// wxBitmapDataObject supports CF_DIB format
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user