You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
8.4 KiB
306 lines
8.4 KiB
//+-------------------------------------------------------------------
|
|
// File: idataobj.cxx
|
|
//
|
|
// Contents: IDataObject methods of CTestEmbed class.
|
|
//
|
|
// Classes: CTestEmbed - IDataObject implementation
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//---------------------------------------------------------------------
|
|
#pragma optimize("",off)
|
|
#include <windows.h>
|
|
#include <ole2.h>
|
|
#include "testsrv.hxx"
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Member: CDataObject::CDataObject()
|
|
//
|
|
// Synopsis: The constructor for CDataObject.
|
|
//
|
|
// Arguments: None
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
CDataObject::CDataObject(CTestEmbed *pteObject)
|
|
{
|
|
_cRef = 1;
|
|
_pDAHolder = NULL;
|
|
_pteObject = pteObject;
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Member: CDataObject::~CDataObject()
|
|
//
|
|
// Synopsis: The destructor for CDataObject.
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
CDataObject::~CDataObject()
|
|
{
|
|
// _cRef count should be 1
|
|
if (1 != _cRef)
|
|
{
|
|
// BUGBUG - Log error
|
|
// Someone hasn't released one of these - Log error
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::QueryInterface
|
|
//
|
|
// Synopsis: Forward this to the object we're associated with
|
|
//
|
|
// Parameters: [iid] - Interface ID to return.
|
|
// [ppv] - Pointer to pointer to object.
|
|
//
|
|
// Returns: S_OK if iid is supported, or E_NOINTERFACE if not.
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::QueryInterface(REFIID iid, void FAR * FAR *ppv)
|
|
{
|
|
return(_pteObject->QueryInterface(iid, ppv));
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::AddRef
|
|
//
|
|
// Synopsis: Forward this to the object we're associated with
|
|
//
|
|
// Returns: New reference count.
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP_(ULONG) CDataObject::AddRef(void)
|
|
{
|
|
++_cRef;
|
|
return(_pteObject->AddRef());
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::Release
|
|
//
|
|
// Synopsis: Forward this to the object we're associated with
|
|
//
|
|
// Returns: New reference count.
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP_(ULONG) CDataObject::Release(void)
|
|
{
|
|
--_cRef;
|
|
return(_pteObject->Release());
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::GetData
|
|
//
|
|
// Synopsis: See spec 2.00.09 p129. Retrieve data for this object
|
|
// using the FORMATETC passed.
|
|
//
|
|
// Parameters: [pformatetcIn] - The format caller wants returned data
|
|
// [pmedium] - Returned data
|
|
//
|
|
// Returns: S_OK, or E_FORMAT if we don't support the format requested
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::GetData(
|
|
LPFORMATETC pformatetcIn,
|
|
LPSTGMEDIUM pmedium)
|
|
{
|
|
// BUGBUG - NYI
|
|
return(E_FAIL);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::GetDataHere
|
|
//
|
|
// Synopsis: See spec 2.00.09 p130. Like GetData, but the pmedium is
|
|
// allocated and ready for us to use.
|
|
//
|
|
// Parameters: [pformatetc] - The format caller wants returned data
|
|
// [pmedium] - STGMEDIUM object ready for our use
|
|
//
|
|
// Returns: S_OK, E_FORMAT
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::GetDataHere(
|
|
LPFORMATETC pformatetc,
|
|
LPSTGMEDIUM pmedium)
|
|
{
|
|
// BUGBUG - NYI
|
|
return(E_FAIL);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::QueryGetData
|
|
//
|
|
// Synopsis: See spec 2.00.09 p130. Answer if the format requested
|
|
// would be honored by GetData.
|
|
//
|
|
// Parameters: [pformatetc] - The format being queried about
|
|
//
|
|
// Returns: S_OK or S_FALSE
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::QueryGetData(LPFORMATETC pformatetc)
|
|
{
|
|
// BUGBUG - NYI
|
|
return(E_FAIL);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::GetCanonicalFormatEtc
|
|
//
|
|
// Synopsis: See spec 2.00.09 p131
|
|
//
|
|
// Parameters: [pformatetc] -
|
|
// [pformatetcOut] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::GetCanonicalFormatEtc(
|
|
LPFORMATETC pformatetc,
|
|
LPFORMATETC pformatetcOut)
|
|
|
|
{
|
|
// BUGBUG - NYI
|
|
return(E_FAIL);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::SetData
|
|
//
|
|
// Synopsis: See spec 2.00.09 p131.
|
|
//
|
|
// Parameters: [pformatetc] -
|
|
// [pmedium] -
|
|
// [fRelease] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::SetData(
|
|
LPFORMATETC pformatetc,
|
|
STGMEDIUM FAR *pmedium,
|
|
BOOL fRelease)
|
|
{
|
|
// BUGBUG - NYI
|
|
return(DV_E_CLIPFORMAT);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::EnumFormatEtc
|
|
//
|
|
// Synopsis: See spec 2.00.09 p131.
|
|
//
|
|
// Parameters: [dwDirection] -
|
|
// [ppenmFormatEtc] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::EnumFormatEtc(
|
|
DWORD dwDirection,
|
|
LPENUMFORMATETC FAR *ppenmFormatEtc)
|
|
{
|
|
// BUGBUG - NYI
|
|
*ppenmFormatEtc = NULL;
|
|
return(E_FAIL);
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::DAdvise
|
|
//
|
|
// Synopsis: See spec 2.00.09 p132
|
|
//
|
|
// Parameters: [pFormatetc] -
|
|
// [advf] -
|
|
// [pAdvSink] -
|
|
// [pdwConnection] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::DAdvise(
|
|
FORMATETC FAR *pFormatetc,
|
|
DWORD advf,
|
|
LPADVISESINK pAdvSink,
|
|
DWORD FAR *pdwConnection)
|
|
{
|
|
if (NULL == _pDAHolder)
|
|
{
|
|
if (S_OK != CreateDataAdviseHolder(&_pDAHolder))
|
|
{
|
|
return(E_OUTOFMEMORY);
|
|
}
|
|
}
|
|
|
|
return(_pDAHolder->Advise(this, pFormatetc, advf, pAdvSink, pdwConnection));
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::DUnadvise
|
|
//
|
|
// Synopsis: See spec 2.00.09 p133
|
|
//
|
|
// Parameters: [dwConnection] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::DUnadvise(DWORD dwConnection)
|
|
{
|
|
if (NULL == _pDAHolder)
|
|
{
|
|
// Nobody is registered
|
|
return(E_INVALIDARG);
|
|
}
|
|
|
|
return(_pDAHolder->Unadvise(dwConnection));
|
|
}
|
|
|
|
|
|
//+-------------------------------------------------------------------
|
|
// Method: CDataObject::EnumDAdvise
|
|
//
|
|
// Synopsis: See spec 2.00.09 p133
|
|
//
|
|
// Parameters: [ppenmAdvise] -
|
|
//
|
|
// Returns: S_OK
|
|
//
|
|
// History: 7-Dec-92 DeanE Created
|
|
//--------------------------------------------------------------------
|
|
STDMETHODIMP CDataObject::EnumDAdvise(LPENUMSTATDATA FAR *ppenmAdvise)
|
|
{
|
|
if (NULL == _pDAHolder)
|
|
{
|
|
return(E_FAIL);
|
|
}
|
|
|
|
return(_pDAHolder->EnumAdvise(ppenmAdvise));
|
|
}
|