Recovery of release 990110 after disk crash.
[wine/multimedia.git] / include / wine / obj_dataobject.h
blob4bc3bac519ed5d3b03dd085fae497a63bb4f7c46
1 /*
2 * Defines the COM interfaces and APIs related to IDataObject.
4 * Depends on 'obj_moniker.h', 'obj_storage.h' and 'obj_base.h'.
5 */
7 #ifndef __WINE_WINE_OBJ_DATAOBJECT_H
8 #define __WINE_WINE_OBJ_DATAOBJECT_H
11 /*****************************************************************************
12 * Predeclare the structures
14 typedef struct DVTARGETDEVICE32 DVTARGETDEVICE32, *LPDVTARGETDEVICE32;
15 DECL_WINELIB_TYPE(DVTARGETDEVICE)
16 DECL_WINELIB_TYPE(LPDVTARGETDEVICE)
18 typedef struct FORMATETC32 FORMATETC32, *LPFORMATETC32;
19 DECL_WINELIB_TYPE(FORMATETC)
20 DECL_WINELIB_TYPE(LPFORMATETC)
22 typedef struct STGMEDIUM32 STGMEDIUM32, *LPSTGMEDIUM32;
23 DECL_WINELIB_TYPE(STGMEDIUM)
24 DECL_WINELIB_TYPE(LPSTGMEDIUM)
27 /*****************************************************************************
28 * Predeclare the interfaces
30 DEFINE_OLEGUID(IID_IAdviseSink, 0x0000010fL, 0, 0);
31 typedef struct IAdviseSink IAdviseSink,*LPADVISESINK;
33 DEFINE_OLEGUID(IID_IAdviseSink2, 0x00000125L, 0, 0);
34 typedef struct IAdviseSink2 IAdviseSink2,*LPADVISESINK2;
36 DEFINE_OLEGUID(IID_IDataAdviseHolder, 0x00000110L, 0, 0);
37 typedef struct IDataAdviseHolder IDataAdviseHolder,*LPDATAADVISEHOLDER;
39 DEFINE_OLEGUID(IID_IDataObject, 0x0000010EL, 0, 0);
40 typedef struct IDataObject IDataObject,*LPDATAOBJECT;
42 DEFINE_OLEGUID(IID_IEnumFORMATETC, 0x00000103L, 0, 0);
43 typedef struct IEnumFORMATETC IEnumFORMATETC,*LPENUMFORMATETC;
45 DEFINE_OLEGUID(IID_IEnumSTATDATA, 0x00000105L, 0, 0);
46 typedef struct IEnumSTATDATA IEnumSTATDATA,*LPENUMSTATDATA;
49 /*****************************************************************************
50 * DVTARGETDEVICE structure
52 struct DVTARGETDEVICE32
54 DWORD tdSize;
55 WORD tdDriverNameOffset;
56 WORD tdDeviceNameOffset;
57 WORD tdPortNameOffset;
58 WORD tdExtDevmodeOffset;
59 BYTE tdData[1];
63 /*****************************************************************************
64 * FORMATETC structure
66 /* wished data format */
67 struct FORMATETC32
69 CLIPFORMAT32 cfFormat;
70 DVTARGETDEVICE32* ptd;
71 DWORD dwAspect;
72 LONG lindex;
73 DWORD tymed;
77 /*****************************************************************************
78 * STGMEDIUM structure
80 typedef enum tagTYMED
81 { TYMED_HGLOBAL = 1,
82 TYMED_FILE = 2,
83 TYMED_ISTREAM = 4,
84 TYMED_ISTORAGE = 8,
85 TYMED_GDI = 16,
86 TYMED_MFPICT = 32,
87 TYMED_ENHMF = 64,
88 TYMED_NULL = 0
89 } TYMED;
91 /* dataobject as answer to a request */
92 struct STGMEDIUM32
94 DWORD tymed;
95 union {
96 HBITMAP32 hBitmap;
97 HMETAFILEPICT32 hMetaFilePict;
98 HENHMETAFILE32 hEnhMetaFile;
99 HGLOBAL32 hGlobal;
100 LPOLESTR32 lpszFileName;
101 IStream32 *pstm;
102 IStorage32 *pstg;
103 } u;
104 IUnknown *pUnkForRelease;
108 /*****************************************************************************
109 * IAdviseSink interface
111 /* FIXME: not implemented */
114 /*****************************************************************************
115 * IAdviseSink2 interface
117 /* FIXME: not implemented */
120 /*****************************************************************************
121 * IDataAdviseHolder interface
123 /* FIXME: not implemented */
126 /*****************************************************************************
127 * IDataObject interface
129 #define ICOM_INTERFACE IDataObject
130 ICOM_BEGIN(IDataObject,IUnknown)
131 ICOM_METHOD2(HRESULT,GetData, LPFORMATETC32,pformatetcIn, STGMEDIUM32*,pmedium);
132 ICOM_METHOD2(HRESULT,GetDataHere, LPFORMATETC32,pformatetc, STGMEDIUM32*,pmedium);
133 ICOM_METHOD1(HRESULT,QueryGetData, LPFORMATETC32,pformatetc);
134 ICOM_METHOD2(HRESULT,GetCanonicalFormatEtc, LPFORMATETC32,pformatectIn, LPFORMATETC32,pformatetcOut);
135 ICOM_METHOD3(HRESULT,SetData, LPFORMATETC32,pformatetc, STGMEDIUM32*,pmedium, BOOL32,fRelease);
136 ICOM_METHOD2(HRESULT,EnumFormatEtc, DWORD,dwDirection, IEnumFORMATETC**,ppenumFormatEtc);
137 ICOM_METHOD4(HRESULT,DAdvise, LPFORMATETC32*,pformatetc, DWORD,advf, IAdviseSink*,pAdvSink, DWORD*,pdwConnection);
138 ICOM_METHOD1(HRESULT,DUnadvise, DWORD,dwConnection);
139 ICOM_METHOD1(HRESULT,EnumDAdvise, IEnumSTATDATA**,ppenumAdvise);
140 ICOM_END(IDataObject)
141 #undef ICOM_INTERFACE
143 #if !defined(__cplusplus) || defined(CINTERFACE)
144 /*** IUnknown methods ***/
145 #define IDataObject_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
146 #define IDataObject_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
147 #define IDataObject_Release(p) ICOM_ICALL (IUnknown,Release,p)
148 /*** IDataObject methods ***/
149 #define IDataObject_GetData(p,a,b) ICOM_CALL2(GetData,p,a,b)
150 #define IDataObject_GetDataHere(p,a,b) ICOM_CALL2(GetDataHere,p,a,b)
151 #define IDataObject_QueryGetData(p,a) ICOM_CALL1(QueryGetData,p,a)
152 #define IDataObject_GetCanonicalFormatEtc(p,a,b) ICOM_CALL2(GetCanonicalFormatEtc,p,a,b)
153 #define IDataObject_SetData(p,a,b,c) ICOM_CALL3(SetData,p,a,b,c)
154 #define IDataObject_EnumFormatEtc(p,a,b) ICOM_CALL2(EnumFormatEtc,p,a,b)
155 #define IDataObject_DAdvise(p,a,b,c,d) ICOM_CALL4(DAdvise,p,a,b,c,d)
156 #define IDataObject_DUnadvise(p,a) ICOM_CALL1(DUnadvise,p,a)
157 #define IDataObject_EnumDAdvise(p,a) ICOM_CALL1(EnumDAdvise,p,a)
158 #endif
161 /*****************************************************************************
162 * IEnumFORMATETC interface
164 #define ICOM_INTERFACE IEnumFORMATETC
165 ICOM_BEGIN(IEnumFORMATETC,IUnknown)
166 ICOM_METHOD3(HRESULT,Next, ULONG,celt, FORMATETC32*,rgelt, ULONG*,pceltFethed);
167 ICOM_METHOD1(HRESULT,Skip, ULONG,celt);
168 ICOM_METHOD (HRESULT,Reset);
169 ICOM_METHOD1(HRESULT,Clone, IEnumFORMATETC**,ppenum);
170 ICOM_END(IEnumFORMATETC)
171 #undef ICOM_INTERFACE
173 #if !defined(__cplusplus) || defined(CINTERFACE)
174 /*** IUnknown methods ***/
175 #define IEnumFORMATETC_QueryInterface(p,a,b) ICOM_ICALL2(IUnknown,QueryInterface,p,a,b)
176 #define IEnumFORMATETC_AddRef(p) ICOM_ICALL (IUnknown,AddRef,p)
177 #define IEnumFORMATETC_Release(p) ICOM_ICALL (IUnknown,Release,p)
178 /*** IEnumFORMATETC methods ***/
179 #define IEnumFORMATETC_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
180 #define IEnumFORMATETC_Skip(p,a) ICOM_CALL1(Skip,p,a)
181 #define IEnumFORMATETC_Reset(p) ICOM_CALL (Reset,p)
182 #define IEnumFORMATETC_Clone(p,a) ICOM_CALL1(Clone,p,a)
183 #endif
186 /*****************************************************************************
187 * IEnumSTATDATA interface
189 /* FIXME: not implemented */
192 #endif /* __WINE_WINE_OBJ_DATAOBJECT_H */