blob: 4bc3bac519ed5d3b03dd085fae497a63bb4f7c46 [file] [log] [blame]
/*
* Defines the COM interfaces and APIs related to IDataObject.
*
* Depends on 'obj_moniker.h', 'obj_storage.h' and 'obj_base.h'.
*/
#ifndef __WINE_WINE_OBJ_DATAOBJECT_H
#define __WINE_WINE_OBJ_DATAOBJECT_H
/*****************************************************************************
* Predeclare the structures
*/
typedef struct DVTARGETDEVICE32 DVTARGETDEVICE32, *LPDVTARGETDEVICE32;
DECL_WINELIB_TYPE(DVTARGETDEVICE)
DECL_WINELIB_TYPE(LPDVTARGETDEVICE)
typedef struct FORMATETC32 FORMATETC32, *LPFORMATETC32;
DECL_WINELIB_TYPE(FORMATETC)
DECL_WINELIB_TYPE(LPFORMATETC)
typedef struct STGMEDIUM32 STGMEDIUM32, *LPSTGMEDIUM32;
DECL_WINELIB_TYPE(STGMEDIUM)
DECL_WINELIB_TYPE(LPSTGMEDIUM)
/*****************************************************************************
* Predeclare the interfaces
*/
DEFINE_OLEGUID(IID_IAdviseSink, 0x0000010fL, 0, 0);
typedef struct IAdviseSink IAdviseSink,*LPADVISESINK;
DEFINE_OLEGUID(IID_IAdviseSink2, 0x00000125L, 0, 0);
typedef struct IAdviseSink2 IAdviseSink2,*LPADVISESINK2;
DEFINE_OLEGUID(IID_IDataAdviseHolder, 0x00000110L, 0, 0);
typedef struct IDataAdviseHolder IDataAdviseHolder,*LPDATAADVISEHOLDER;
DEFINE_OLEGUID(IID_IDataObject, 0x0000010EL, 0, 0);
typedef struct IDataObject IDataObject,*LPDATAOBJECT;
DEFINE_OLEGUID(IID_IEnumFORMATETC, 0x00000103L, 0, 0);
typedef struct IEnumFORMATETC IEnumFORMATETC,*LPENUMFORMATETC;
DEFINE_OLEGUID(IID_IEnumSTATDATA, 0x00000105L, 0, 0);
typedef struct IEnumSTATDATA IEnumSTATDATA,*LPENUMSTATDATA;
/*****************************************************************************
* DVTARGETDEVICE structure
*/
struct DVTARGETDEVICE32
{
DWORD tdSize;
WORD tdDriverNameOffset;
WORD tdDeviceNameOffset;
WORD tdPortNameOffset;
WORD tdExtDevmodeOffset;
BYTE tdData[1];
};
/*****************************************************************************
* FORMATETC structure
*/
/* wished data format */
struct FORMATETC32
{
CLIPFORMAT32 cfFormat;
DVTARGETDEVICE32* ptd;
DWORD dwAspect;
LONG lindex;
DWORD tymed;
};
/*****************************************************************************
* STGMEDIUM structure
*/
typedef enum tagTYMED
{ TYMED_HGLOBAL = 1,
TYMED_FILE = 2,
TYMED_ISTREAM = 4,
TYMED_ISTORAGE = 8,
TYMED_GDI = 16,
TYMED_MFPICT = 32,
TYMED_ENHMF = 64,
TYMED_NULL = 0
} TYMED;
/* dataobject as answer to a request */
struct STGMEDIUM32
{
DWORD tymed;
union {
HBITMAP32 hBitmap;
HMETAFILEPICT32 hMetaFilePict;
HENHMETAFILE32 hEnhMetaFile;
HGLOBAL32 hGlobal;
LPOLESTR32 lpszFileName;
IStream32 *pstm;
IStorage32 *pstg;
} u;
IUnknown *pUnkForRelease;
};
/*****************************************************************************
* IAdviseSink interface
*/
/* FIXME: not implemented */
/*****************************************************************************
* IAdviseSink2 interface
*/
/* FIXME: not implemented */
/*****************************************************************************
* IDataAdviseHolder interface
*/
/* FIXME: not implemented */
/*****************************************************************************
* IDataObject interface
*/
#define ICOM_INTERFACE IDataObject
ICOM_BEGIN(IDataObject,IUnknown)
ICOM_METHOD2(HRESULT,GetData, LPFORMATETC32,pformatetcIn, STGMEDIUM32*,pmedium);
ICOM_METHOD2(HRESULT,GetDataHere, LPFORMATETC32,pformatetc, STGMEDIUM32*,pmedium);
ICOM_METHOD1(HRESULT,QueryGetData, LPFORMATETC32,pformatetc);
ICOM_METHOD2(HRESULT,GetCanonicalFormatEtc, LPFORMATETC32,pformatectIn, LPFORMATETC32,pformatetcOut);
ICOM_METHOD3(HRESULT,SetData, LPFORMATETC32,pformatetc, STGMEDIUM32*,pmedium, BOOL32,fRelease);
ICOM_METHOD2(HRESULT,EnumFormatEtc, DWORD,dwDirection, IEnumFORMATETC**,ppenumFormatEtc);
ICOM_METHOD4(HRESULT,DAdvise, LPFORMATETC32*,pformatetc, DWORD,advf, IAdviseSink*,pAdvSink, DWORD*,pdwConnection);
ICOM_METHOD1(HRESULT,DUnadvise, DWORD,dwConnection);
ICOM_METHOD1(HRESULT,EnumDAdvise, IEnumSTATDATA**,ppenumAdvise);
ICOM_END(IDataObject)
#undef ICOM_INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IDataObject_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
#define IDataObject_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
#define IDataObject_Release(p) ICOM_ICALL (IUnknown,Release,p)
/*** IDataObject methods ***/
#define IDataObject_GetData(p,a,b) ICOM_CALL2(GetData,p,a,b)
#define IDataObject_GetDataHere(p,a,b) ICOM_CALL2(GetDataHere,p,a,b)
#define IDataObject_QueryGetData(p,a) ICOM_CALL1(QueryGetData,p,a)
#define IDataObject_GetCanonicalFormatEtc(p,a,b) ICOM_CALL2(GetCanonicalFormatEtc,p,a,b)
#define IDataObject_SetData(p,a,b,c) ICOM_CALL3(SetData,p,a,b,c)
#define IDataObject_EnumFormatEtc(p,a,b) ICOM_CALL2(EnumFormatEtc,p,a,b)
#define IDataObject_DAdvise(p,a,b,c,d) ICOM_CALL4(DAdvise,p,a,b,c,d)
#define IDataObject_DUnadvise(p,a) ICOM_CALL1(DUnadvise,p,a)
#define IDataObject_EnumDAdvise(p,a) ICOM_CALL1(EnumDAdvise,p,a)
#endif
/*****************************************************************************
* IEnumFORMATETC interface
*/
#define ICOM_INTERFACE IEnumFORMATETC
ICOM_BEGIN(IEnumFORMATETC,IUnknown)
ICOM_METHOD3(HRESULT,Next, ULONG,celt, FORMATETC32*,rgelt, ULONG*,pceltFethed);
ICOM_METHOD1(HRESULT,Skip, ULONG,celt);
ICOM_METHOD (HRESULT,Reset);
ICOM_METHOD1(HRESULT,Clone, IEnumFORMATETC**,ppenum);
ICOM_END(IEnumFORMATETC)
#undef ICOM_INTERFACE
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
#define IEnumFORMATETC_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
#define IEnumFORMATETC_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
#define IEnumFORMATETC_Release(p) ICOM_ICALL (IUnknown,Release,p)
/*** IEnumFORMATETC methods ***/
#define IEnumFORMATETC_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
#define IEnumFORMATETC_Skip(p,a) ICOM_CALL1(Skip,p,a)
#define IEnumFORMATETC_Reset(p) ICOM_CALL (Reset,p)
#define IEnumFORMATETC_Clone(p,a) ICOM_CALL1(Clone,p,a)
#endif
/*****************************************************************************
* IEnumSTATDATA interface
*/
/* FIXME: not implemented */
#endif /* __WINE_WINE_OBJ_DATAOBJECT_H */