STDMETHODIMP wxIDataObject::GetDataHere(FORMATETC *pformatetc, STGMEDIUM *pmedium) { wxLogTrace(wxTRACE_OleCalls, wxT("wxIDataObject::GetDataHere")); // put data in caller provided medium switch ( pmedium->tymed ) { case TYMED_GDI: if ( !m_pDataObject->GetDataHere(wxDF_BITMAP, &pmedium->hBitmap) ) return E_UNEXPECTED; break; case TYMED_ENHMF: if ( !m_pDataObject->GetDataHere(wxDF_ENHMETAFILE, &pmedium->hEnhMetaFile) ) return E_UNEXPECTED; break; case TYMED_MFPICT: // fall through - we pass METAFILEPICT through HGLOBAL case TYMED_HGLOBAL: { // copy data HGLOBAL hGlobal = pmedium->hGlobal; void *pBuf = GlobalLock(hGlobal); if ( pBuf == NULL ) { wxLogLastError(wxT("GlobalLock")); return E_OUTOFMEMORY; } wxDataFormat format = pformatetc->cfFormat; // possibly put the size in the beginning of the buffer pBuf = m_pDataObject->SetSizeInBuffer ( pBuf, ::GlobalSize(hGlobal), format ); if ( !m_pDataObject->GetDataHere(format, pBuf) ) return E_UNEXPECTED; GlobalUnlock(hGlobal); } break; default: return DV_E_TYMED; } return S_OK; }
void CIDataObject::GetDataHere( const wxDataFormat& rFormat , char* pzBuffer , ULONG WXUNUSED(ulLen) ) { m_pDataObject->GetDataHere( rFormat ,(void*)pzBuffer ); } // end of CIDataObject::GetDataHere