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:
Vadim Zeitlin
1999-10-22 13:26:45 +00:00
parent b56c22469a
commit 1e8335b0b7
5 changed files with 48 additions and 58 deletions

View File

@@ -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)
{
}

View File

@@ -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();

View File

@@ -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
};

View File

@@ -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;
wxTextDataObject& textDataObject = (wxTextDataObject &)data;
char* s = (char*)wxGetClipboardData(format);
if ( s )
{
textDataObject->SetText(s);
delete[] s;
return TRUE;
}
else
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);
if ( !metaFile )
return FALSE;
metaFileDataObject.SetMetafile(*metaFile);
delete metaFile;
return TRUE;
}
else
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;
}
}
return FALSE;
#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

View File

@@ -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
// ----------------------------------------------------------------------------