|
|
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.