home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / msinc.pak / DVOBJ.H < prev    next >
Text File  |  1997-07-23  |  17KB  |  494 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * dvobj.h -             Data/View object definitions                                                              *
  4. *                                                                             *
  5. *               OLE Version 2.0                                               *
  6. *                                                                             *
  7. \*****************************************************************************/
  8.  
  9. /*
  10.  *      C/C++ Run Time Library - Version 6.5
  11.  *
  12.  *      Copyright (c) 1994 by Borland International
  13.  *      All Rights Reserved.
  14.  *
  15.  */
  16.  
  17. #if !defined(__FLAT__)
  18. #if !defined( _DVOBJ_H_ )
  19. #define _DVOBJ_H_
  20. #define __DVOBJ_H
  21.  
  22. /****** DV value types ******************************************************/
  23.  
  24. //      forward type declarations
  25. #if defined(__cplusplus)
  26. interface IStorage;
  27. interface IStream;
  28. interface IAdviseSink;
  29. interface IMoniker;
  30. #else
  31. typedef interface IStorage IStorage;
  32. typedef interface IStream IStream;
  33. typedef interface IAdviseSink IAdviseSink;
  34. typedef interface IMoniker IMoniker;
  35. #endif
  36.  
  37. typedef            IStorage FAR* LPSTORAGE;
  38. typedef             IStream FAR* LPSTREAM;
  39. typedef         IAdviseSink FAR* LPADVISESINK;
  40. typedef             IMoniker FAR* LPMONIKER;
  41.  
  42.  
  43. #if !defined(_MAC)
  44. typedef WORD CLIPFORMAT;
  45. #else
  46. typedef unsigned long CLIPFORMAT;            // ResType
  47. #endif
  48. typedef  CLIPFORMAT FAR* LPCLIPFORMAT;
  49.  
  50.  
  51. // Data/View aspect; specifies the desired aspect of the object when
  52. // drawing or getting data.
  53. typedef enum tagDVASPECT
  54. {
  55.     DVASPECT_CONTENT = 1,
  56.     DVASPECT_THUMBNAIL = 2,
  57.     DVASPECT_ICON = 4,
  58.     DVASPECT_DOCPRINT = 8
  59. } DVASPECT;
  60.  
  61.  
  62. // Data/View target device; determines the device for drawing or gettting data
  63. typedef struct FARSTRUCT tagDVTARGETDEVICE
  64. {
  65.     DWORD tdSize;
  66.     WORD tdDriverNameOffset;
  67.     WORD tdDeviceNameOffset;
  68.     WORD tdPortNameOffset;
  69.     WORD tdExtDevmodeOffset;
  70.     BYTE tdData[1];
  71. } DVTARGETDEVICE;
  72.  
  73.  
  74. // Format, etc.; completely specifices the kind of data desired, including tymed
  75. typedef struct FARSTRUCT tagFORMATETC
  76. {
  77.     CLIPFORMAT          cfFormat;
  78.     DVTARGETDEVICE FAR* ptd;
  79.     DWORD               dwAspect;
  80.     LONG                lindex;
  81.     DWORD               tymed;
  82. } FORMATETC, FAR* LPFORMATETC;
  83.  
  84.  
  85. // TYpes of storage MEDiums; determines how data is stored or passed around
  86. typedef enum tagTYMED
  87. {
  88.     TYMED_HGLOBAL = 1,
  89.     TYMED_FILE = 2,
  90.     TYMED_ISTREAM = 4,
  91.     TYMED_ISTORAGE = 8,
  92.     TYMED_GDI = 16,
  93.     TYMED_MFPICT = 32,
  94.     TYMED_NULL = 0
  95. } TYMED;
  96.  
  97.  
  98. // DATA format DIRection
  99. typedef enum tagDATADIR
  100. {
  101.     DATADIR_GET = 1,
  102.     DATADIR_SET = 2,
  103. } DATADIR;
  104.  
  105.  
  106. // SToraGe MEDIUM; a block of data on a particular medium
  107. typedef struct FARSTRUCT tagSTGMEDIUM
  108. {
  109.     DWORD   tymed;
  110.     union
  111.     {
  112.         HANDLE  hGlobal;
  113.         LPSTR   lpszFileName;
  114.         IStream FAR* pstm;
  115.         IStorage FAR* pstg;
  116.     } _UNION_NAME(u);
  117.     IUnknown FAR* pUnkForRelease;
  118. } STGMEDIUM, FAR* LPSTGMEDIUM;
  119.  
  120.  
  121. // Advise Flags
  122. typedef enum tagADVF
  123. {
  124.     ADVF_NODATA = 1,
  125.     ADVF_PRIMEFIRST = 2,
  126.     ADVF_ONLYONCE = 4,
  127.     ADVF_DATAONSTOP = 64,
  128.     ADVFCACHE_NOHANDLER = 8,
  129.     ADVFCACHE_FORCEBUILTIN = 16,
  130.     ADVFCACHE_ONSAVE = 32
  131. } ADVF;
  132.  
  133.  
  134. // Stats for data; used by several enumerations and by at least one
  135. // implementation of IDataAdviseHolder; if a field is not used, it
  136. // will be NULL.
  137. typedef struct FARSTRUCT tagSTATDATA
  138. {                                   // field used by:
  139.     FORMATETC formatetc;            // EnumAdvise, EnumData (cache), EnumFormats
  140.     DWORD advf;                     // EnumAdvise, EnumData (cache)
  141.     IAdviseSink FAR* pAdvSink;      // EnumAdvise
  142.     DWORD dwConnection;             // EnumAdvise
  143. } STATDATA;
  144.  
  145. typedef  STATDATA FAR* LPSTATDATA;
  146.  
  147.  
  148.  
  149. /****** DV Interfaces ***************************************************/
  150.  
  151.  
  152. #undef  INTERFACE
  153. #define INTERFACE   IEnumFORMATETC
  154.  
  155. DECLARE_INTERFACE_(IEnumFORMATETC, IUnknown)
  156. {
  157.     // *** IUnknown methods ***
  158.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  159.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  160.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  161.  
  162.     // *** IEnumFORMATETC methods ***
  163.     STDMETHOD(Next) (THIS_ ULONG celt, FORMATETC FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  164.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  165.     STDMETHOD(Reset) (THIS) PURE;
  166.     STDMETHOD(Clone) (THIS_ IEnumFORMATETC FAR* FAR* ppenum) PURE;
  167. };
  168. typedef        IEnumFORMATETC FAR* LPENUMFORMATETC;
  169.  
  170.  
  171. #undef  INTERFACE
  172. #define INTERFACE   IEnumSTATDATA
  173.  
  174. DECLARE_INTERFACE_(IEnumSTATDATA, IUnknown)
  175. {
  176.     // *** IUnknown methods ***
  177.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  178.     STDMETHOD_(ULONG, AddRef) (THIS)  PURE;
  179.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  180.  
  181.     // *** IEnumSTATDATA methods ***
  182.     STDMETHOD(Next) (THIS_ ULONG celt, STATDATA FAR * rgelt, ULONG FAR* pceltFetched) PURE;
  183.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  184.     STDMETHOD(Reset) (THIS) PURE;
  185.     STDMETHOD(Clone) (THIS_ IEnumSTATDATA FAR* FAR* ppenum) PURE;
  186. };
  187. typedef        IEnumSTATDATA FAR* LPENUMSTATDATA;
  188.  
  189.  
  190.  
  191. #undef  INTERFACE
  192. #define INTERFACE   IDataObject
  193.  
  194. #define DATA_E_FORMATETC        DV_E_FORMATETC
  195. #define DATA_S_SAMEFORMATETC    (DATA_S_FIRST + 0)
  196.  
  197. DECLARE_INTERFACE_(IDataObject, IUnknown)
  198. {
  199.     // *** IUnknown methods ***
  200.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  201.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  202.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  203.  
  204.     // *** IDataObject methods ***
  205.     STDMETHOD(GetData) (THIS_ LPFORMATETC pformatetcIn,
  206.                             LPSTGMEDIUM pmedium ) PURE;
  207.     STDMETHOD(GetDataHere) (THIS_ LPFORMATETC pformatetc,
  208.                             LPSTGMEDIUM pmedium ) PURE;
  209.     STDMETHOD(QueryGetData) (THIS_ LPFORMATETC pformatetc ) PURE;
  210.     STDMETHOD(GetCanonicalFormatEtc) (THIS_ LPFORMATETC pformatetc,
  211.                             LPFORMATETC pformatetcOut) PURE;
  212.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  213.                             BOOL fRelease) PURE;
  214.     STDMETHOD(EnumFormatEtc) (THIS_ DWORD dwDirection,
  215.                             LPENUMFORMATETC FAR* ppenumFormatEtc) PURE;
  216.  
  217.     STDMETHOD(DAdvise) (THIS_ FORMATETC FAR* pFormatetc, DWORD advf,
  218.                     LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
  219.     STDMETHOD(DUnadvise) (THIS_ DWORD dwConnection) PURE;
  220.     STDMETHOD(EnumDAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  221. };
  222. typedef      IDataObject FAR* LPDATAOBJECT;
  223.  
  224.  
  225.  
  226. #undef  INTERFACE
  227. #define INTERFACE   IViewObject
  228.  
  229. #define VIEW_E_DRAW             (VIEW_E_FIRST)
  230. #define E_DRAW                  VIEW_E_DRAW
  231.  
  232. #define VIEW_S_ALREADY_FROZEN   (VIEW_S_FIRST)
  233.  
  234. DECLARE_INTERFACE_(IViewObject, IUnknown)
  235. {
  236.     // *** IUnknown methods ***
  237.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  238.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  239.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  240.  
  241.     // *** IViewObject methods ***
  242.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  243.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  244.                     HDC hicTargetDev,
  245.                     HDC hdcDraw,
  246.                     LPCRECTL lprcBounds,
  247.                     LPCRECTL lprcWBounds,
  248.                     BOOL (CALLBACK * pfnContinue) (DWORD),
  249.                     DWORD dwContinue) PURE;
  250.  
  251.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  252.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  253.                     HDC hicTargetDev,
  254.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  255.  
  256.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex,
  257.                     void FAR* pvAspect,
  258.                     DWORD FAR* pdwFreeze) PURE;
  259.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  260.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf,
  261.                     LPADVISESINK pAdvSink) PURE;
  262.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf,
  263.                     LPADVISESINK FAR* ppAdvSink) PURE;
  264. };
  265. typedef      IViewObject FAR* LPVIEWOBJECT;
  266.  
  267.  
  268. #undef  INTERFACE
  269. #define INTERFACE   IViewObject2
  270.  
  271. DECLARE_INTERFACE_(IViewObject2, IViewObject)
  272. {
  273.     // *** IUnknown methods ***
  274.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  275.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  276.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  277.  
  278.     // *** IViewObject methods ***
  279.     STDMETHOD(Draw) (THIS_ DWORD dwDrawAspect, LONG lindex,
  280.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  281.                     HDC hicTargetDev,
  282.                     HDC hdcDraw,
  283.                     LPCRECTL lprcBounds,
  284.                     LPCRECTL lprcWBounds,
  285.                     BOOL (CALLBACK * pfnContinue) (DWORD),
  286.                     DWORD dwContinue) PURE;
  287.  
  288.     STDMETHOD(GetColorSet) (THIS_ DWORD dwDrawAspect, LONG lindex,
  289.                     void FAR* pvAspect, DVTARGETDEVICE FAR * ptd,
  290.                     HDC hicTargetDev,
  291.                     LPLOGPALETTE FAR* ppColorSet) PURE;
  292.  
  293.     STDMETHOD(Freeze)(THIS_ DWORD dwDrawAspect, LONG lindex,
  294.                     void FAR* pvAspect,
  295.                     DWORD FAR* pdwFreeze) PURE;
  296.     STDMETHOD(Unfreeze) (THIS_ DWORD dwFreeze) PURE;
  297.     STDMETHOD(SetAdvise) (THIS_ DWORD aspects, DWORD advf,
  298.                     LPADVISESINK pAdvSink) PURE;
  299.     STDMETHOD(GetAdvise) (THIS_ DWORD FAR* pAspects, DWORD FAR* pAdvf,
  300.                     LPADVISESINK FAR* ppAdvSink) PURE;
  301.  
  302.     // *** IViewObject2 methods ***
  303.     STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LONG lindex,
  304.                     DVTARGETDEVICE FAR * ptd, LPSIZEL lpsizel) PURE;
  305.  
  306. };
  307. typedef      IViewObject2 FAR* LPVIEWOBJECT2;
  308.  
  309.  
  310. #undef  INTERFACE
  311. #define INTERFACE   IAdviseSink
  312.  
  313. DECLARE_INTERFACE_(IAdviseSink, IUnknown)
  314. {
  315.     // *** IUnknown methods ***
  316.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  317.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  318.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  319.  
  320.     // *** IAdviseSink methods ***
  321.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
  322.                             STGMEDIUM FAR* pStgmed) PURE;
  323.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  324.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  325.     STDMETHOD_(void,OnSave)(THIS) PURE;
  326.     STDMETHOD_(void,OnClose)(THIS) PURE;
  327. };
  328. typedef      IAdviseSink FAR* LPADVISESINK;
  329.  
  330.  
  331.  
  332. #undef  INTERFACE
  333. #define INTERFACE   IAdviseSink2
  334.  
  335. DECLARE_INTERFACE_(IAdviseSink2, IAdviseSink)
  336. {
  337.     // *** IUnknown methods ***
  338.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  339.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  340.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  341.  
  342.     // *** IAdviseSink methods ***
  343.     STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC FAR* pFormatetc,
  344.                             STGMEDIUM FAR* pStgmed) PURE;
  345.     STDMETHOD_(void,OnViewChange)(THIS_ DWORD dwAspect, LONG lindex) PURE;
  346.     STDMETHOD_(void,OnRename)(THIS_ LPMONIKER pmk) PURE;
  347.     STDMETHOD_(void,OnSave)(THIS) PURE;
  348.     STDMETHOD_(void,OnClose)(THIS) PURE;
  349.  
  350.     // *** IAdviseSink2 methods ***
  351.     STDMETHOD_(void,OnLinkSrcChange)(THIS_ LPMONIKER pmk) PURE;
  352. };
  353. typedef      IAdviseSink2 FAR* LPADVISESINK2;
  354.  
  355.  
  356.  
  357. #undef  INTERFACE
  358. #define INTERFACE   IDataAdviseHolder
  359.  
  360. DECLARE_INTERFACE_(IDataAdviseHolder, IUnknown)
  361. {
  362.     // *** IUnknown methods ***
  363.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  364.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  365.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  366.  
  367.     // *** IDataAdviseHolder methods ***
  368.     STDMETHOD(Advise)(THIS_ LPDATAOBJECT pDataObject, FORMATETC FAR* pFetc,
  369.             DWORD advf, LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
  370.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  371.     STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  372.  
  373.     STDMETHOD(SendOnDataChange)(THIS_ LPDATAOBJECT pDataObject, DWORD dwReserved, DWORD advf) PURE;
  374. };
  375. typedef      IDataAdviseHolder FAR* LPDATAADVISEHOLDER;
  376.  
  377.  
  378.  
  379. #undef  INTERFACE
  380. #define INTERFACE   IOleCache
  381.  
  382. #define CACHE_E_NOCACHE_UPDATED         (CACHE_E_FIRST)
  383.  
  384. #define CACHE_S_FORMATETC_NOTSUPPORTED  (CACHE_S_FIRST)
  385. #define CACHE_S_SAMECACHE               (CACHE_S_FIRST+1)
  386. #define CACHE_S_SOMECACHES_NOTUPDATED   (CACHE_S_FIRST+2)
  387.  
  388.  
  389. DECLARE_INTERFACE_(IOleCache, IUnknown)
  390. {
  391.     // *** IUnknown methods ***
  392.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  393.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  394.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  395.  
  396.     // *** IOleCache methods ***
  397.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  398.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  399.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  400.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  401.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  402.                             BOOL fRelease) PURE;
  403. };
  404. typedef         IOleCache FAR* LPOLECACHE;
  405.  
  406.  
  407.  
  408. // Cache update Flags
  409.  
  410. #define UPDFCACHE_NODATACACHE                   0x00000001
  411. #define UPDFCACHE_ONSAVECACHE                   0x00000002
  412. #define UPDFCACHE_ONSTOPCACHE                   0x00000004
  413. #define UPDFCACHE_NORMALCACHE                   0x00000008
  414. #define UPDFCACHE_IFBLANK                       0x00000010
  415. #define UPDFCACHE_ONLYIFBLANK                   0x80000000
  416.  
  417. #define UPDFCACHE_IFBLANKORONSAVECACHE  (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE )
  418. #define UPDFCACHE_ALL                                   (~UPDFCACHE_ONLYIFBLANK)
  419. #define UPDFCACHE_ALLBUTNODATACACHE             (UPDFCACHE_ALL & ~UPDFCACHE_NODATACACHE)
  420.  
  421.  
  422. // IOleCache2::DiscardCache options
  423. typedef enum tagDISCARDCACHE
  424. {
  425.         DISCARDCACHE_SAVEIFDIRTY =      0,      // Save all dirty cache before discarding
  426.         DISCARDCACHE_NOSAVE              =      1       // Don't save dirty caches before
  427.                                                                         // discarding
  428. } DISCARDCACHE;
  429.  
  430.  
  431. #undef  INTERFACE
  432. #define INTERFACE   IOleCache2
  433.  
  434. DECLARE_INTERFACE_(IOleCache2, IOleCache)
  435. {
  436.     // *** IUnknown methods ***
  437.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  438.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  439.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  440.  
  441.     // *** IOleCache methods ***
  442.     STDMETHOD(Cache) (THIS_ LPFORMATETC lpFormatetc, DWORD advf, LPDWORD lpdwConnection) PURE;
  443.     STDMETHOD(Uncache) (THIS_ DWORD dwConnection) PURE;
  444.     STDMETHOD(EnumCache) (THIS_ LPENUMSTATDATA FAR* ppenumStatData) PURE;
  445.     STDMETHOD(InitCache) (THIS_ LPDATAOBJECT pDataObject) PURE;
  446.     STDMETHOD(SetData) (THIS_ LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium,
  447.                             BOOL fRelease) PURE;
  448.  
  449.     // *** IOleCache2 methods ***
  450.     STDMETHOD(UpdateCache) (THIS_ LPDATAOBJECT pDataObject, DWORD grfUpdf,
  451.                                                         LPVOID pReserved) PURE;
  452.     STDMETHOD(DiscardCache) (THIS_ DWORD dwDiscardOptions) PURE;
  453.  
  454. };
  455. typedef      IOleCache2 FAR* LPOLECACHE2;
  456.  
  457.  
  458. #undef  INTERFACE
  459. #define INTERFACE   IOleCacheControl
  460.  
  461. DECLARE_INTERFACE_(IOleCacheControl, IUnknown)
  462. {
  463.     // *** IUnknown methods ***
  464.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  465.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  466.     STDMETHOD_(ULONG, Release) (THIS) PURE;
  467.  
  468.     // *** IDataObject methods ***
  469.     STDMETHOD(OnRun) (THIS_ LPDATAOBJECT pDataObject) PURE;
  470.     STDMETHOD(OnStop) (THIS) PURE;
  471. };
  472. typedef      IOleCacheControl FAR* LPOLECACHECONTROL;
  473.  
  474.  
  475.  
  476. /****** DV APIs ***********************************************************/
  477.  
  478.  
  479. STDAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  480.  
  481. STDAPI CreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID rclsid,
  482.                                         REFIID iid, LPVOID FAR* ppv);
  483.  
  484. #endif // _DVOBJ_H_
  485.  
  486.  
  487. #else  /* !__FLAT__ */
  488. #ifndef RC_INVOKED
  489. #pragma message("WARNING: your code should include ole2.h instead of dvobj.h")
  490. #endif /* !RC_INVOKED */
  491.  
  492. #include <ole2.h>
  493.  
  494. #endif  /* __FLAT__ */