Exemplo n.º 1
0
STDMETHODIMP CDataObject::EnumFormatEtc(  DWORD dwDirection, 
                                          IEnumFORMATETC** ppEFE)
{
	HRESULT  hr = E_NOTIMPL;
	*ppEFE = NULL;
	
	if(DATADIR_GET == dwDirection)
	{
		CEnumFormatEtc *pefeTemp = new CEnumFormatEtc(m_pFormatEtc, m_cFormatEtc);
		if(pefeTemp)
		{
			hr = pefeTemp->QueryInterface(IID_IEnumFORMATETC, (LPVOID*)ppEFE);
			pefeTemp->Release();
		}
	}
	
	return hr;
}
Exemplo n.º 2
0
STDMETHODIMP CEnumFormatEtc::Clone(IEnumFORMATETC **ppCloneEnumFormatEtc)
{
CEnumFormatEtc *newEnum;

if(NULL == ppCloneEnumFormatEtc)
   return S_FALSE;
      
newEnum = new CEnumFormatEtc(m_pStrFE, m_cItems);

if(newEnum ==NULL)
   return E_OUTOFMEMORY;

newEnum->AddRef();
newEnum->m_iCur = m_iCur;

*ppCloneEnumFormatEtc = newEnum;

return S_OK;
}
Exemplo n.º 3
0
STDMETHODIMP
CEnumFormatEtc::Clone(LPENUMFORMATETC *aResult)
{
  // Must return a new IEnumFORMATETC interface with the same iterative state.
  if (!aResult)
      return E_INVALIDARG;

  CEnumFormatEtc * pEnumObj = new CEnumFormatEtc(mFormatList);

  if (!pEnumObj)
      return E_OUTOFMEMORY;

  pEnumObj->AddRef();
  pEnumObj->SetIndex(mCurrentIdx);

  *aResult = pEnumObj;

  return S_OK;
}