home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / RTLWIN32.PAK / OLE2.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  12.7 KB  |  359 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992-1996.
  5. //
  6. //  File:       OLE2.h
  7. //  Contents:   Main OLE2 header; Defines Linking and Emmebbeding interfaces, and API's.
  8. //              Also includes .h files for the compobj, and oleauto  subcomponents.
  9. //
  10. //----------------------------------------------------------------------------
  11. #if !defined( _OLE2_H_ )
  12. #define _OLE2_H_
  13. #pragma option -b
  14.  
  15. // Set packing to 8
  16. #pragma option -b.
  17. #include <pshpack8.h>
  18. #pragma option -b
  19.  
  20. // Make 100% sure WIN32 is defined
  21. #ifndef WIN32
  22. #define WIN32    100  // 100 == NT version 1.0
  23. #endif
  24.  
  25.  
  26. // SET to remove _export from interface definitions
  27.  
  28.  
  29. #pragma option -b.
  30. #include <winerror.h>
  31. #pragma option -b
  32.  
  33. #pragma option -b.
  34. #include <objbase.h>
  35. #pragma option -b
  36. #pragma option -b.
  37. #include <oleauto.h>
  38. #pragma option -b
  39.  
  40. // View OBJECT Error Codes
  41.  
  42. #define E_DRAW                  VIEW_E_DRAW
  43.  
  44. // IDataObject Error Codes
  45. #define DATA_E_FORMATETC        DV_E_FORMATETC
  46.  
  47.  
  48.  
  49.  
  50.  
  51. // Common stuff gleamed from OLE.2,
  52.  
  53. /* verbs */
  54. #define OLEIVERB_PRIMARY            (0L)
  55. #define OLEIVERB_SHOW               (-1L)
  56. #define OLEIVERB_OPEN               (-2L)
  57. #define OLEIVERB_HIDE               (-3L)
  58. #define OLEIVERB_UIACTIVATE         (-4L)
  59. #define OLEIVERB_INPLACEACTIVATE    (-5L)
  60. #define OLEIVERB_DISCARDUNDOSTATE   (-6L)
  61.  
  62. // for OleCreateEmbeddingHelper flags; roles in low word; options in high word
  63. #define EMBDHLP_INPROC_HANDLER   0x0000L
  64. #define EMBDHLP_INPROC_SERVER    0x0001L
  65. #define EMBDHLP_CREATENOW    0x00000000L
  66. #define EMBDHLP_DELAYCREATE  0x00010000L
  67.  
  68. /* extended create function flags */
  69. #define OLECREATE_LEAVERUNNING    0x00000001
  70.  
  71. /* pull in the MIDL generated header */
  72.  
  73. #pragma option -b.
  74. #include <oleidl.h>
  75. #pragma option -b
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. /****** DV APIs ***********************************************************/
  83.  
  84.  
  85. WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93. /****** OLE API Prototypes ************************************************/
  94.  
  95. WINOLEAPI_(DWORD) OleBuildVersion( VOID );
  96.  
  97. /* helper functions */
  98. WINOLEAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
  99. WINOLEAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
  100. WINOLEAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
  101. WINOLEAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
  102. WINOLEAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
  103. WINOLEAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType);
  104.  
  105.  
  106. /* init/term */
  107.  
  108. WINOLEAPI OleInitialize(LPVOID pvReserved);
  109. WINOLEAPI_(void) OleUninitialize(void);
  110.  
  111.  
  112. /* APIs to query whether (Embedded/Linked) object can be created from
  113.    the data object */
  114.  
  115. WINOLEAPI  OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
  116. WINOLEAPI  OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
  117.  
  118.  
  119. /* Object creation APIs */
  120.  
  121. WINOLEAPI  OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
  122.                 LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
  123.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  124.  
  125. WINOLEAPI  OleCreateEx(REFCLSID rclsid, REFIID riid, DWORD dwFlags,
  126.                 DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  127.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  128.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  129.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  130.  
  131. WINOLEAPI  OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  132.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  133.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  134.                 LPVOID FAR* ppvObj);
  135.  
  136. WINOLEAPI  OleCreateFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
  137.                 DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  138.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  139.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  140.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  141.  
  142. WINOLEAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  143.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  144.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  145.                 LPVOID FAR* ppvObj);
  146.  
  147. WINOLEAPI  OleCreateLinkFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
  148.                 DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  149.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  150.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  151.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  152.  
  153. WINOLEAPI  OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
  154.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  155.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  156.                 LPVOID FAR* ppvObj);
  157.  
  158.  
  159. WINOLEAPI  OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
  160.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  161.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  162.  
  163. WINOLEAPI  OleCreateLinkEx(LPMONIKER pmkLinkSrc, REFIID riid,
  164.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  165.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  166.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  167.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  168.  
  169. WINOLEAPI  OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
  170.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  171.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  172.  
  173. WINOLEAPI  OleCreateLinkToFileEx(LPCOLESTR lpszFileName, REFIID riid,
  174.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  175.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  176.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  177.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  178.  
  179. WINOLEAPI  OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
  180.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  181.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  182.  
  183. WINOLEAPI  OleCreateFromFileEx(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
  184.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  185.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  186.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  187.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  188.  
  189. WINOLEAPI  OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
  190.             LPVOID FAR* ppvObj);
  191.  
  192. WINOLEAPI  OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
  193.  
  194. WINOLEAPI  OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
  195. WINOLEAPI  OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
  196.  
  197.  
  198. WINOLEAPI  OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
  199. WINOLEAPI  OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
  200.  
  201.  
  202. /* Drag/Drop APIs */
  203.  
  204. WINOLEAPI  RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
  205. WINOLEAPI  RevokeDragDrop(HWND hwnd);
  206. WINOLEAPI  DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
  207.             DWORD dwOKEffects, LPDWORD pdwEffect);
  208.  
  209. /* Clipboard APIs */
  210.  
  211. WINOLEAPI  OleSetClipboard(LPDATAOBJECT pDataObj);
  212. WINOLEAPI  OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
  213. WINOLEAPI  OleFlushClipboard(void);
  214. WINOLEAPI  OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
  215.  
  216.  
  217. /* InPlace Editing APIs */
  218.  
  219. WINOLEAPI_(HOLEMENU)   OleCreateMenuDescriptor (HMENU hmenuCombined,
  220.                                 LPOLEMENUGROUPWIDTHS lpMenuWidths);
  221. WINOLEAPI              OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
  222.                                 HWND hwndActiveObject,
  223.                                 LPOLEINPLACEFRAME lpFrame,
  224.                                 LPOLEINPLACEACTIVEOBJECT lpActiveObj);
  225. WINOLEAPI              OleDestroyMenuDescriptor (HOLEMENU holemenu);
  226.  
  227. WINOLEAPI              OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
  228.                             LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
  229.  
  230.  
  231. /* Helper APIs */
  232. WINOLEAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
  233.                         UINT uiFlags);
  234.  
  235. WINOLEAPI          OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
  236.                     LPCRECT lprcBounds);
  237.  
  238. WINOLEAPI          OleRun(LPUNKNOWN pUnknown);
  239. WINOLEAPI_(BOOL)   OleIsRunning(LPOLEOBJECT pObject);
  240. WINOLEAPI          OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
  241. WINOLEAPI_(void)   ReleaseStgMedium(LPSTGMEDIUM);
  242. WINOLEAPI          CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
  243.  
  244. WINOLEAPI          OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  245.                     REFIID riid, LPVOID FAR* lplpObj);
  246.  
  247. WINOLEAPI          OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  248.                     DWORD flags, LPCLASSFACTORY pCF,
  249.                                         REFIID riid, LPVOID FAR* lplpObj);
  250.  
  251. WINOLEAPI_(BOOL)   IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
  252.                                         WORD FAR* lpwCmd);
  253. /* Icon extraction Helper APIs */
  254.  
  255. WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
  256.  
  257. WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid,     LPOLESTR lpszLabel,
  258.                                         BOOL fUseTypeAsLabel);
  259.  
  260. WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel,
  261.                                         LPOLESTR lpszSourceFile, UINT iIconIndex);
  262.  
  263.  
  264.  
  265. /* Registration Database Helper APIs */
  266.  
  267. WINOLEAPI                  OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
  268.                                         LPOLESTR FAR* pszUserType);
  269.  
  270. WINOLEAPI                  OleRegGetMiscStatus     (REFCLSID clsid, DWORD dwAspect,
  271.                                         DWORD FAR* pdwStatus);
  272.  
  273. WINOLEAPI                  OleRegEnumFormatEtc     (REFCLSID clsid, DWORD dwDirection,
  274.                                         LPENUMFORMATETC FAR* ppenum);
  275.  
  276. WINOLEAPI                  OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
  277.  
  278.  
  279.  
  280.  
  281.  
  282. /* OLE 1.0 conversion APIS */
  283.  
  284. /***** OLE 1.0 OLESTREAM declarations *************************************/
  285.  
  286. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  287.  
  288. typedef struct _OLESTREAMVTBL
  289. {
  290.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  291.     DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
  292. } OLESTREAMVTBL;
  293. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  294.  
  295. typedef struct _OLESTREAM
  296. {
  297.     LPOLESTREAMVTBL lpstbl;
  298. } OLESTREAM;
  299.  
  300.  
  301. WINOLEAPI OleConvertOLESTREAMToIStorage
  302.     (LPOLESTREAM                lpolestream,
  303.     LPSTORAGE                   pstg,
  304.     const DVTARGETDEVICE FAR*   ptd);
  305.  
  306. WINOLEAPI OleConvertIStorageToOLESTREAM
  307.     (LPSTORAGE      pstg,
  308.     LPOLESTREAM     lpolestream);
  309.  
  310.  
  311. /* Storage Utility APIs */
  312. WINOLEAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
  313. WINOLEAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  314.                                     LPLOCKBYTES FAR* pplkbyt);
  315.  
  316. WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
  317. WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  318.                                 LPSTREAM FAR* ppstm);
  319.  
  320.  
  321. /* ConvertTo APIS */
  322.  
  323. WINOLEAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
  324. WINOLEAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
  325. WINOLEAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
  326. WINOLEAPI GetConvertStg(LPSTORAGE pStg);
  327. WINOLEAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
  328.  
  329.  
  330. WINOLEAPI OleConvertIStorageToOLESTREAMEx
  331.     (LPSTORAGE          pstg,
  332.                                     // Presentation data to OLESTREAM
  333.      CLIPFORMAT         cfFormat,   //      format
  334.      LONG               lWidth,     //      width
  335.      LONG               lHeight,    //      height
  336.      DWORD              dwSize,     //      size in bytes
  337.      LPSTGMEDIUM        pmedium,    //      bits
  338.      LPOLESTREAM        polestm);
  339.  
  340. WINOLEAPI OleConvertOLESTREAMToIStorageEx
  341.     (LPOLESTREAM        polestm,
  342.      LPSTORAGE          pstg,
  343.                                     // Presentation data from OLESTREAM
  344.      CLIPFORMAT FAR*    pcfFormat,  //      format
  345.      LONG FAR*          plwWidth,   //      width
  346.      LONG FAR*          plHeight,   //      height
  347.      DWORD FAR*         pdwSize,    //      size in bytes
  348.      LPSTGMEDIUM        pmedium);   //      bits
  349.  
  350. #ifndef RC_INVOKED
  351. #pragma option -b.
  352. #include <poppack.h>
  353. #pragma option -b
  354. #endif // RC_INVOKED
  355.  
  356. #pragma option -b.
  357. #endif     // __OLE2_H__
  358.  
  359.