DATAOBJ.H
//******************************************************************************************* 
// 
// Filename : DataObj.h 
// 
//Definition of CCabObj 
// 
// Copyright 1994 - 1998 Microsoft Corporation. All rights reserved 
// 
//******************************************************************************************* 
 
#ifndef _DATAOBJ_H_ 
#define _DATAOBJ_H_ 
 
class CCabObj : public IDataObject 
{ 
public: 
CCabObj(HWND hwndOwner, CCabFolder *pcf, LPCABITEM *apit, UINT cpit); 
~CCabObj(); 
 
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppvObject); 
STDMETHODIMP_(ULONG) AddRef(); 
STDMETHODIMP_(ULONG) Release(); 
         
STDMETHODIMP GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium); 
STDMETHODIMP GetDataHere(FORMATETC *pformatetc, STGMEDIUM *pmedium); 
STDMETHODIMP QueryGetData(FORMATETC *pformatetc); 
STDMETHODIMP GetCanonicalFormatEtc(FORMATETC *pformatectIn, FORMATETC *pformatetcOut); 
STDMETHODIMP SetData(FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease); 
STDMETHODIMP EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc); 
STDMETHODIMP DAdvise(FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, 
DWORD *pdwConnection); 
STDMETHODIMP DUnadvise(DWORD dwConnection); 
STDMETHODIMP EnumDAdvise(IEnumSTATDATA **ppenumAdvise); 
 
private: 
BOOL InitFileGroupDesc(); 
BOOL InitFileContents(); 
 
static HGLOBAL * CALLBACK ShouldExtract(LPCSTR pszFile, DWORD dwSize, 
UINT date, UINT time, UINT attribs, LPARAM lParam); 
 
HRESULT InitContents(); 
 
private: 
static UINT s_uFileGroupDesc; 
static UINT s_uFileContents; 
 
CRefCount m_cRef; 
 
CRefDll m_cRefDll; 
 
CCabItemList m_lSel; 
HGLOBAL *m_lContents; 
 
CCabFolder *m_pcfHere; 
HWND m_hwndOwner; 
} ; 
 
#endif // _DATAOBJ_H_