|
|
1.1 root 1: #if !defined( _DVOBJ_H_ )
2: #define _DVOBJ_H_
3:
4: /****** DV value types ******************************************************/
5:
6: // forward type declarations
7: #if defined(__cplusplus)
8: interface IStorage;
9: interface IStream;
10: interface IAdviseSink;
11: interface IMoniker;
12: #else
13: typedef interface IStorage IStorage;
14: typedef interface IStream IStream;
15: typedef interface IAdviseSink IAdviseSink;
16: typedef interface IMoniker IMoniker;
17: #endif
18:
19: typedef IStorage FAR* LPSTORAGE;
20: typedef IStream FAR* LPSTREAM;
21: typedef IAdviseSink FAR* LPADVISESINK;
22: typedef IMoniker FAR* LPMONIKER;
23:
24:
25: #if defined(_MAC) || defined(WIN32)
26: typedef unsigned long CLIPFORMAT; // ResType
27: #else
28: typedef WORD CLIPFORMAT;
29: #endif
30: typedef CLIPFORMAT FAR* LPCLIPFORMAT;
31:
32:
33: // Data/View aspect; specifies the desired aspect of the object when
34: // drawing or getting data.
35: typedef enum tagDVASPECT
36: {
37: DVASPECT_CONTENT = 1,
38: DVASPECT_THUMBNAIL = 2,
39: DVASPECT_ICON = 4,
40: DVASPECT_DOCPRINT = 8
41: } DVASPECT;
42:
43:
44: // Data/View target device; determines the device for drawing or gettting data
45: typedef struct FARSTRUCT tagDVTARGETDEVICE
46: {
47: DWORD tdSize;
48: WORD tdDriverNameOffset;
49: WORD tdDeviceNameOffset;
50: WORD tdPortNameOffset;
51: WORD tdExtDevmodeOffset;
52: BYTE tdData[1];
53: } DVTARGETDEVICE;
54:
55:
56: // Format, etc.; completely specifices the kind of data desired, including tymed
57: typedef struct FARSTRUCT tagFORMATETC
58: {
59: CLIPFORMAT cfFormat;
60: DVTARGETDEVICE FAR* ptd;
61: DWORD dwAspect;
62: LONG lindex;
63: DWORD tymed;
64: } FORMATETC, FAR* LPFORMATETC;
65:
66:
67: // TYpes of storage MEDiums; determines how data is stored or passed around
68: typedef enum tagTYMED
69: {
70: TYMED_HGLOBAL = 1,
71: TYMED_FILE = 2,
72: TYMED_ISTREAM = 4,
73: TYMED_ISTORAGE = 8,
74: TYMED_GDI = 16,
75: TYMED_MFPICT = 32,
76: TYMED_NULL = 0
77: } TYMED;
78:
79:
80: // DATA format DIRection
81: typedef enum tagDATADIR
82: {
83: DATADIR_GET = 1,
84: DATADIR_SET = 2,
85: } DATADIR;
86:
87:
88: // Storage MEDIUM; a block of data on a particular medium
89: typedef struct FARSTRUCT tagSTGMEDIUM
90: {
91: DWORD tymed;
92: union
93: {
94: HANDLE hGlobal;
95: LPSTR lpszFileName;
96: IStream FAR* pstm;
97: IStorage FAR* pstg;
98: }
99: #ifdef NONAMELESSUNION
100: u // add a tag when name less unions not supported
101: #endif
102: ;
103: IUnknown FAR* pUnkForRelease;
104: } STGMEDIUM, FAR* LPSTGMEDIUM;
105:
106:
107: // Advise Flags
108: typedef enum tagADVF
109: {
110: ADVF_NODATA = 1,
111: ADVF_PRIMEFIRST = 2,
112: ADVF_ONLYONCE = 4,
113: ADVF_DATAONSTOP = 64,
114: ADVFCACHE_NOHANDLER = 8,
115: ADVFCACHE_FORCEBUILTIN = 16,
116: ADVFCACHE_ONSAVE = 32
117: } ADVF;
118:
119:
120: // Stats for data; used by several enumerations and by at least one
121: // implementation of IDataAdviseHolder; if a field is not used, it
122: // will be NULL.
123: typedef struct FARSTRUCT tagSTATDATA
124: { // field used by:
125: FORMATETC formatetc; // EnumAdvise, EnumData (cache), EnumFormats
126: DWORD advf; // EnumAdvise, EnumData (cache)
127: IAdviseSink FAR* pAdvSink; // EnumAdvise
128: DWORD dwConnection; // EnumAdvise
129: } STATDATA;
130:
131: typedef STATDATA FAR* LPSTATDATA;
132:
133:
134:
135: /****** DV Interfaces ***************************************************/
136:
137:
138: #undef INTERFACE
139: #define INTERFACE IEnumFORMATETC
140:
141: DECLARE_INTERFACE_(IEnumFORMATETC, IUnknown)
142: {
143: // *** IUnknown methods ***
144: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
145: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
146: STDMETHOD_(ULONG,Release) (THIS) PURE;
147:
148: // *** IEnumFORMATETC methods ***
149: STDMETHOD(Next) (THIS_ ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched) PURE;
150: STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
151: STDMETHOD(Reset) (THIS) PURE;
152: STDMETHOD(Clone) (THIS_ IEnumFORMATETC FAR* FAR* ppenum) PURE;
153: };
154: typedef IEnumFORMATETC FAR* LPENUMFORMATETC;
155:
156:
157: #undef INTERFACE
158: #define INTERFACE IEnumSTATDATA
159:
160: DECLARE_INTERFACE_(IEnumSTATDATA, IUnknown)
161: {
162: // *** IUnknown methods ***
163: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
164: STDMETHOD_(ULONG, AddRef) (THIS) PURE;
165: STDMETHOD_(ULONG, Release) (THIS) PURE;
166:
167: // *** IEnumSTATDATA methods ***
168: STDMETHOD(Next) (THIS_ ULONG celt, STATDATA FAR * rgelt, ULONG FAR* pceltFetched) PURE;
169: STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
170: STDMETHOD(Reset) (THIS) PURE;
171: STDMETHOD(Clone) (THIS_ IEnumSTATDATA FAR* FAR* ppenum) PURE;
172: };
173: typedef IEnumSTATDATA FAR* LPENUMSTATDATA;
174:
175:
176:
177: #undef INTERFACE
178: #define INTERFACE IDataObject
179:
180: #define DATA_E_FORMATETC DV_E_FORMATETC
181: #define DATA_S_SAMEFORMATETC (DATA_S_FIRST + 0)
182:
183: DECLARE_INTERFACE_(IDataObject, IUnknown)
184: {
185: // *** IUnknown methods ***
186: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
187: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
188: STDMETHOD_(ULONG, Release) (THIS) PURE;
189:
190: // *** IDataObject methods ***
191: STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn,
192: LPSTGMEDIUM pmedium ) PURE;
193: STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetc,
194: LPSTGMEDIUM pmedium ) PURE;
195: STDMETHOD(QueryGetData) (THIS_ LPFORMATETC pformatetc ) PURE;
196: STDMETHOD(GetCanonicalFormatEtc) (THIS_ LPFORMATETC pformatetc,
197: LPFORMATETC pformatetcOut) PURE;
198: STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
199: BOOL fRelease) PURE;
200: STDMETHOD(EnumFormatEtc) (THIS_ DWORD dwDirection,
201: LPENUMFORMATETC FAR* ppenumFormatEtc) PURE;
202: #ifdef OLE2SHIP
203: STDMETHOD(DAdvise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf,
204: LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
205: STDMETHOD(DUnadvise) (THIS_ DWORD dwConnection) PURE;
206: STDMETHOD(EnumDAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
207: #else
208: STDMETHOD(Advise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf,
209: LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
210: STDMETHOD(Unadvise) (THIS_ DWORD dwConnection) PURE;
211: STDMETHOD(EnumAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
212: #endif
213: };
214: typedef IDataObject FAR* LPDATAOBJECT;
215:
216:
217:
218: #undef INTERFACE
219: #define INTERFACE IViewObject
220:
221: #define VIEW_E_DRAW (VIEW_E_FIRST)
222: #define E_DRAW VIEW_E_DRAW
223:
224: #define VIEW_S_ALREADY_FROZEN (VIEW_S_FIRST)
225:
226: DECLARE_INTERFACE_(IViewObject, IUnknown)
227: {
228: // *** IUnknown methods ***
229: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
230: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
231: STDMETHOD_(ULONG,Release) (THIS) PURE;
232:
233: // *** IViewObject methods ***
234: STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
235: void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
236: HDC hicTargetDev,
237: HDC hdcDraw,
238: const LPRECTL lprcBounds,
239: const LPRECTL lprcWBounds,
240: BOOL (CALLBACK * pfnContinue) (DWORD),
241: DWORD dwContinue) PURE;
242:
243: STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
244: void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
245: HDC hicTargetDev,
246: LPLOGPALETTE FAR* ppColorSet) PURE;
247:
248: STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex,
249: void FAR* pvAspect,
250: DWORD FAR* pdwFreeze) PURE;
251: STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
252: STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf,
253: LPADVISESINK pAdvSink) PURE;
254: STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf,
255: LPADVISESINK FAR* ppAdvSink) PURE;
256: };
257: typedef IViewObject FAR* LPVIEWOBJECT;
258:
259:
260: #undef INTERFACE
261: #define INTERFACE IAdviseSink
262:
263: #ifndef OLE2SHIP
264: #define ADVSINK_E_NOT_OLE1_MONIKER (ADVSINK_E_FIRST + 0)
265: // OnRename called with a moniker that is not OLE 1.0 compatible,
266: // i.e., not a file moniker or a file/item composite moniker.
267: #endif
268:
269: DECLARE_INTERFACE_(IAdviseSink, IUnknown)
270: {
271: // *** IUnknown methods ***
272: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
273: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
274: STDMETHOD_(ULONG,Release) (THIS) PURE;
275:
276: // *** IAdviseSink methods ***
277: STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
278: STGMEDIUM FAR* pStgmed) PURE;
279: STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
280: STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
281: STDMETHOD_(void,OnSave)(THIS) PURE;
282: STDMETHOD_(void,OnClose)(THIS) PURE;
283: };
284: typedef IAdviseSink FAR* LPADVISESINK;
285:
286:
287:
288: #ifdef OLE2SHIP
289:
290: #undef INTERFACE
291: #define INTERFACE IAdviseSink2
292:
293: DECLARE_INTERFACE_(IAdviseSink2, IAdviseSink)
294: {
295: // *** IUnknown methods ***
296: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
297: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
298: STDMETHOD_(ULONG,Release) (THIS) PURE;
299:
300: // *** IAdviseSink methods ***
301: STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
302: STGMEDIUM FAR* pStgmed) PURE;
303: STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
304: STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
305: STDMETHOD_(void,OnSave)(THIS) PURE;
306: STDMETHOD_(void,OnClose)(THIS) PURE;
307:
308: // *** IAdviseSink2 methods ***
309: STDMETHOD_(void,OnLinkSrcChange)(THIS_ LPMONIKER pmk) PURE;
310: };
311: typedef IAdviseSink2 FAR* LPADVISESINK2;
312:
313: #endif
314:
315:
316: #undef INTERFACE
317: #define INTERFACE IDataAdviseHolder
318:
319: DECLARE_INTERFACE_(IDataAdviseHolder, IUnknown)
320: {
321: // *** IUnknown methods ***
322: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
323: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
324: STDMETHOD_(ULONG,Release) (THIS) PURE;
325:
326: // *** IDataAdviseHolder methods ***
327: STDMETHOD(Advise)(THIS_ LPDATAOBJECT pDataObject, FORMATETC FAR* pFetc,
328: DWORD advf, LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
329: STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
330: STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
331:
332: STDMETHOD(SendOnDataChange)(THIS_ LPDATAOBJECT pDataObject, DWORD dwReserved, DWORD advf) PURE;
333: };
334: typedef IDataAdviseHolder FAR* LPDATAADVISEHOLDER;
335:
336:
337:
338: #undef INTERFACE
339: #define INTERFACE IOleCache
340:
341: #define CACHE_E_NOCACHE_UPDATED (CACHE_E_FIRST)
342:
343: #define CACHE_S_FORMATETC_NOTSUPPORTED (CACHE_S_FIRST)
344: #define CACHE_S_SAMECACHE (CACHE_S_FIRST+1)
345: #define CACHE_S_SOMECACHES_NOTUPDATED (CACHE_S_FIRST+2)
346:
347: DECLARE_INTERFACE_(IOleCache, IUnknown)
348: {
349: // *** IUnknown methods ***
350: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
351: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
352: STDMETHOD_(ULONG,Release) (THIS) PURE;
353:
354: // *** IOleCache methods ***
355: STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
356: STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
357: STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
358: STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
359: STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
360: BOOL fRelease) PURE;
361: };
362: typedef IOleCache FAR* LPOLECACHE;
363:
364: /****** DV APIs ***********************************************************/
365:
366:
367: STDAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
368:
369: #ifndef OLE2SHIP
370: #define CACHE_E_NOCACHE_UPDATED (CACHE_E_FIRST)
371: #define CACHE_S_FORMATETC_NOTSUPPORTED (CACHE_S_FIRST)
372: #define CACHE_S_SAMECACHE (CACHE_S_FIRST+1)
373: #define CACHE_S_SOMECACHES_NOTUPDATED (CACHE_S_FIRST+2)
374: #endif
375:
376: #endif // _DVOBJ_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.