56 lines
2.1 KiB
C
56 lines
2.1 KiB
C
|
#ifndef __IDLDATA_H__
|
||
|
#define __IDLDATA_H__
|
||
|
|
||
|
#include "idlcomm.h"
|
||
|
|
||
|
#define MAX_FORMATS ICF_MAX
|
||
|
|
||
|
STDAPI CIDLData_CreateInstance(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEMIDLIST apidl[], IDataObject *pdtInner, IDataObject **ppdtobj);
|
||
|
|
||
|
class CIDLDataObj : public IDataObject, public IAsyncOperation
|
||
|
{
|
||
|
friend HRESULT CIDLData_CreateInstance(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEMIDLIST apidl[], IDataObject *pdtInner, IDataObject **ppdtobj);
|
||
|
protected:
|
||
|
CIDLDataObj(IDataObject *pdtInner);
|
||
|
CIDLDataObj(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEMIDLIST apidl[]);
|
||
|
CIDLDataObj(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEMIDLIST apidl[], IDataObject *pdtInner);
|
||
|
virtual ~CIDLDataObj(void);
|
||
|
|
||
|
public:
|
||
|
void InitIDLData1(IDataObject *pdtInner);
|
||
|
void InitIDLData2(LPCITEMIDLIST pidlFolder, UINT cidl, LPCITEMIDLIST apidl[]);
|
||
|
|
||
|
// IUnknown
|
||
|
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObj);
|
||
|
STDMETHODIMP_(ULONG) AddRef(void);
|
||
|
STDMETHODIMP_(ULONG) Release(void);
|
||
|
|
||
|
// IDataObject
|
||
|
STDMETHODIMP GetData(FORMATETC *pFmtEtc, STGMEDIUM *pstm);
|
||
|
STDMETHODIMP GetDataHere(FORMATETC *pFmtEtc, STGMEDIUM *pstm);
|
||
|
STDMETHODIMP QueryGetData(FORMATETC *pFmtEtc);
|
||
|
STDMETHODIMP GetCanonicalFormatEtc(FORMATETC *pFmtEtcIn, FORMATETC *pFmtEtcOut);
|
||
|
STDMETHODIMP SetData(FORMATETC *pFmtEtc, STGMEDIUM *pstm, BOOL fRelease);
|
||
|
STDMETHODIMP EnumFormatEtc(DWORD dwDirection, LPENUMFORMATETC *ppEnum);
|
||
|
STDMETHODIMP DAdvise(FORMATETC *pFmtEtc, DWORD grfAdv, LPADVISESINK pAdvSink, DWORD *pdwConnection);
|
||
|
STDMETHODIMP DUnadvise(DWORD dwConnection);
|
||
|
STDMETHODIMP EnumDAdvise(LPENUMSTATDATA *ppEnum);
|
||
|
|
||
|
// IAsyncOperation
|
||
|
STDMETHODIMP SetAsyncMode(BOOL fDoOpAsync);
|
||
|
STDMETHODIMP GetAsyncMode(BOOL *pfIsOpAsync);
|
||
|
STDMETHODIMP StartOperation(IBindCtx * pbc);
|
||
|
STDMETHODIMP InOperation(BOOL * pfInAsyncOp);
|
||
|
STDMETHODIMP EndOperation(HRESULT hResult, IBindCtx * pbc, DWORD dwEffects);
|
||
|
|
||
|
private:
|
||
|
LONG _cRef;
|
||
|
IDataObject *_pdtInner;
|
||
|
IUnknown *_punkThread;
|
||
|
BOOL _fEnumFormatCalled; // TRUE once called.
|
||
|
BOOL _fDidAsynchStart;
|
||
|
FORMATETC _fmte[MAX_FORMATS];
|
||
|
STGMEDIUM _medium[MAX_FORMATS];
|
||
|
};
|
||
|
|
||
|
#endif
|