#include "wx/msw/private.h" // includes <windows.h>
+#ifdef __WXWINCE__
+#include <winreg.h>
+#endif
+
// for some compilers, the entire ole2.h must be included, not only oleauto.h
-#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__)
+#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__) || defined(__WXWINCE__)
#include <ole2.h>
#endif
#ifdef __WXDEBUG__
static const wxChar *GetTymedName(DWORD tymed);
#else // !Debug
- #define GetTymedName(tymed) _T("")
+ #define GetTymedName(tymed) wxEmptyString
#endif // Debug/!Debug
// ----------------------------------------------------------------------------
STDMETHODIMP wxIEnumFORMATETC::Next(ULONG celt,
FORMATETC *rgelt,
- ULONG *WXUNUSED(pceltFetched))
+ ULONG *pceltFetched)
{
wxLogTrace(wxTRACE_OleCalls, wxT("wxIEnumFORMATETC::Next"));
- if ( celt > 1 ) {
- // we only return 1 element at a time - mainly because I'm too lazy to
- // implement something which you're never asked for anyhow
- return S_FALSE;
- }
-
- if ( m_nCurrent < m_nCount ) {
+ ULONG numFetched = 0;
+ while (m_nCurrent < m_nCount && numFetched < celt) {
FORMATETC format;
format.cfFormat = m_formats[m_nCurrent++];
format.ptd = NULL;
format.dwAspect = DVASPECT_CONTENT;
format.lindex = -1;
format.tymed = TYMED_HGLOBAL;
- *rgelt = format;
- return S_OK;
- }
- else {
- // bad index
- return S_FALSE;
+ *rgelt++ = format;
+ numFetched++;
}
+
+ if (pceltFetched)
+ *pceltFetched = numFetched;
+
+ return numFetched == celt ? S_OK : S_FALSE;
}
STDMETHODIMP wxIEnumFORMATETC::Skip(ULONG celt)
pmedium->tymed = TYMED_ENHMF;
break;
+#ifndef __WXWINCE__
case wxDF_METAFILE:
pmedium->hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE,
sizeof(METAFILEPICT));
}
pmedium->tymed = TYMED_MFPICT;
break;
-
+#endif
default:
// alloc memory
size_t size = m_pDataObject->GetDataSize(format);
return S_OK;
}
-#ifdef __DIGITALMARS__
-extern "C"
-size_t wxDataObjectComposite::GetBufferOffset( const wxDataFormat& format );
-
-extern "C"
-const void* wxDataObjectComposite::GetSizeFromBuffer( const void* buffer,
- size_t* size,
- const wxDataFormat& format ) ;
-extern "C"
-void* wxDataObjectComposite::SetSizeInBuffer( void* buffer, size_t size,
- const wxDataFormat& format ) ;
-
-#endif
// set data functions
STDMETHODIMP wxIDataObject::SetData(FORMATETC *pformatetc,
break;
#endif
case CF_BITMAP:
+#ifndef __WXWINCE__
case CF_HDROP:
// these formats don't use size at all, anyhow (but
// pass data by handle, which is always a single DWORD)
size = 0;
break;
+#endif
case CF_DIB:
// the handler will calculate size itself (it's too
size = 0;
break;
+#ifndef __WXWINCE__
case CF_METAFILEPICT:
size = sizeof(METAFILEPICT);
break;
-
+#endif
default:
{
// we suppose that the size precedes the data
size_t wxBitmapDataObject::GetDataSize() const
{
+#if wxUSE_WXDIB
return wxDIB::ConvertFromBitmap(NULL, GetHbitmapOf(GetBitmap()));
+#else
+ return 0;
+#endif
}
bool wxBitmapDataObject::GetDataHere(void *buf) const
{
+#if wxUSE_WXDIB
BITMAPINFO * const pbi = (BITMAPINFO *)buf;
return wxDIB::ConvertFromBitmap(pbi, GetHbitmapOf(GetBitmap())) != 0;
+#else
+ return FALSE;
+#endif
}
bool wxBitmapDataObject::SetData(size_t WXUNUSED(len), const void *buf)
{
+#if wxUSE_WXDIB
const BITMAPINFO * const pbmi = (const BITMAPINFO *)buf;
HBITMAP hbmp = wxDIB::ConvertToBitmap(pbmi);
SetBitmap(bitmap);
return TRUE;
+#else
+ return FALSE;
+#endif
}
// ----------------------------------------------------------------------------
bool wxFileDataObject::SetData(size_t WXUNUSED(size), const void *pData)
{
+#ifndef __WXWINCE__
m_filenames.Empty();
// the documentation states that the first member of DROPFILES structure is
}
return TRUE;
+#else
+ return FALSE;
+#endif
}
void wxFileDataObject::AddFile(const wxString& file)
size_t wxFileDataObject::GetDataSize() const
{
+#ifndef __WXWINCE__
// size returned will be the size of the DROPFILES structure,
// plus the list of filesnames (null byte separated), plus
// a double null at the end
}
return sz;
+#else
+ return 0;
+#endif
}
bool wxFileDataObject::GetDataHere(void *pData) const
{
+#ifndef __WXWINCE__
// pData points to an externally allocated memory block
// created using the size returned by GetDataSize()
*pbuf = wxT('\0');
return TRUE;
+#else
+ return FALSE;
+#endif
}
// ----------------------------------------------------------------------------