mirror of https://github.com/lianthony/NT4.0
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.
95 lines
2.7 KiB
95 lines
2.7 KiB
/*
|
|
* gendatao.hpp - Generic IDataObject implementation description.
|
|
*/
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" { /* Assume C declarations for C++. */
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
/* Classes
|
|
**********/
|
|
|
|
class GenDataObject : private RefCount,
|
|
public IDataObject
|
|
{
|
|
private:
|
|
ULONG m_ulcFormatGranularity;
|
|
PFORMATETC m_pfmtetc;
|
|
PSTGMEDIUM m_pstgmed;
|
|
ULONG m_ulcFormats;
|
|
|
|
// array methods
|
|
|
|
HRESULT STDMETHODCALLTYPE AllocateArrays(ULONG ulcElems);
|
|
HRESULT STDMETHODCALLTYPE GrowArrays(ULONG ulcElems);
|
|
|
|
// data methods
|
|
|
|
HRESULT STDMETHODCALLTYPE AddData(PCFORMATETC pcfmtetc, PCSTGMEDIUM pcstgmed);
|
|
HRESULT STDMETHODCALLTYPE FindData(PCFORMATETC pcfmtetc, PULONG pulFound);
|
|
HRESULT STDMETHODCALLTYPE ReplaceData(PCFORMATETC pcfmtetc, PCSTGMEDIUM pcstgmed, ULONG ulReplace);
|
|
|
|
public:
|
|
GenDataObject(ULONG ulcInitialFormats, ULONG ulcFormatGranularity);
|
|
~GenDataObject(void);
|
|
|
|
// IDataObject methods
|
|
|
|
HRESULT STDMETHODCALLTYPE GetData(PFORMATETC pfmtetcIn, PSTGMEDIUM pstgmed);
|
|
HRESULT STDMETHODCALLTYPE GetDataHere(PFORMATETC pfmtetc, PSTGMEDIUM pstgpmed);
|
|
HRESULT STDMETHODCALLTYPE QueryGetData(PFORMATETC pfmtetc);
|
|
HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(PFORMATETC pfmtetcIn, PFORMATETC pfmtetcOut);
|
|
HRESULT STDMETHODCALLTYPE SetData(PFORMATETC pfmtetc, PSTGMEDIUM pstgmed, BOOL bRelease);
|
|
HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, PIEnumFORMATETC *ppienumFormatEtc);
|
|
HRESULT STDMETHODCALLTYPE DAdvise(PFORMATETC pfmtetc, DWORD dwAdviseFlags, PIAdviseSink piadvsink, PDWORD pdwConnection);
|
|
HRESULT STDMETHODCALLTYPE DUnadvise(DWORD dwConnection);
|
|
HRESULT STDMETHODCALLTYPE EnumDAdvise(PIEnumSTATDATA *ppienumStatData);
|
|
|
|
// IUnknown methods
|
|
|
|
ULONG STDMETHODCALLTYPE AddRef(void);
|
|
ULONG STDMETHODCALLTYPE Release(void);
|
|
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, PVOID *ppvObj);
|
|
|
|
// other methods
|
|
|
|
HRESULT STDMETHODCALLTYPE Status(void);
|
|
|
|
// friends
|
|
|
|
#ifdef DEBUG
|
|
|
|
friend BOOL IsValidPCGenDataObject(const GenDataObject *pcgendo);
|
|
|
|
#endif
|
|
|
|
};
|
|
DECLARE_STANDARD_TYPES(GenDataObject);
|
|
|
|
|
|
/* Prototypes
|
|
*************/
|
|
|
|
// gendatao.cpp
|
|
|
|
/*
|
|
* Success:
|
|
* S_OK
|
|
*
|
|
* Failure:
|
|
* DV_E_TYMED
|
|
* E_OUTOFMEMORY
|
|
*/
|
|
extern HRESULT CloneStgMedium(PCSTGMEDIUM pcstgmedSrc, PSTGMEDIUM pstgmedDest);
|
|
|
|
extern BOOL DVTARGETDEVICEMatchesRequest(PCDVTARGETDEVICE pcdvtdRequest, PCDVTARGETDEVICE pcdvtdActual);
|
|
extern BOOL TYMEDMatchesRequest(TYMED tymedRequest, TYMED tymedActual);
|
|
extern BOOL FORMATETCMatchesRequest(PCFORMATETC pcfmtetcRequest, PCFORMATETC pcfmtetcActual);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
} /* End of extern "C" {. */
|
|
#endif /* __cplusplus */
|
|
|