home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / ole2.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  15KB  |  426 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992-1997.
  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.  
  14. #ifndef _MAC
  15. // Set packing to 8
  16. #include <pshpack8.h>
  17.  
  18. // Make 100% sure WIN32 is defined
  19. #ifndef WIN32
  20. #define WIN32    100  // 100 == NT version 1.0
  21. #endif
  22. #else //_MAC
  23. #ifdef _WIN32
  24. #include "macname1.h"
  25. #endif // _WIN32
  26. #endif //_MAC
  27.  
  28.  
  29.  
  30. // SET to remove _export from interface definitions
  31.  
  32.  
  33. #include <winerror.h>
  34.  
  35. #ifdef _MAC
  36. #if !defined(__MACPUB__)
  37. #include <macpub.h>
  38. #endif
  39. #endif //_MAC
  40.  
  41. #include <objbase.h>
  42. #include <oleauto.h>
  43.  
  44. // View OBJECT Error Codes
  45.  
  46. #define E_DRAW                  VIEW_E_DRAW
  47.  
  48. // IDataObject Error Codes
  49. #define DATA_E_FORMATETC        DV_E_FORMATETC
  50.  
  51.  
  52. #ifdef _MAC
  53. /****** Standard Object Definitions *****************************************/
  54.  
  55. //#ifndef __COMPOBJ__
  56. //#include <compobj.h>
  57. //#endif
  58.  
  59.  
  60.  
  61. typedef enum {
  62.     OLE_E_NOEXTENSION    = OLE_E_NOSTORAGE +1,    // no extension at startup
  63.     OLE_E_VERSEXTENSION,                        // extension has wrong version #
  64.     OLE_E_IPBUSY,                                // cannot get inplace resource
  65.     OLE_E_NOT_FRONT_PROCESS,                    // inplace container unexpectedly in background
  66.     OLE_E_WRONG_MENU,                            // holemenu != prev holemenu
  67.     OLE_E_MENU_NOT_PATCHED,                        // menubar is not hashed
  68.     OLE_E_MENUID_NOT_HASHED,                    // id was never hashed
  69.     OLE_E_foo
  70. } inplace_errors;
  71.  
  72.  
  73. // DoDragDropMac()
  74. typedef struct tagDRAG_FLAVORINFO {
  75.     unsigned long    cfFormat;
  76.     unsigned long    FlavorFlags;        // Flavor Flags as specified by the DragManager
  77.     OLEBOOL            fAddData;            // If true, the data is added with the flavor
  78.     long            reserved;            // must be NULL
  79. } DRAG_FLAVORINFO;
  80.  
  81. #endif //_MAC
  82.  
  83.  
  84. // Common stuff gleamed from OLE.2,
  85.  
  86. /* verbs */
  87. #define OLEIVERB_PRIMARY            (0L)
  88. #define OLEIVERB_SHOW               (-1L)
  89. #define OLEIVERB_OPEN               (-2L)
  90. #define OLEIVERB_HIDE               (-3L)
  91. #define OLEIVERB_UIACTIVATE         (-4L)
  92. #define OLEIVERB_INPLACEACTIVATE    (-5L)
  93. #define OLEIVERB_DISCARDUNDOSTATE   (-6L)
  94.  
  95. // for OleCreateEmbeddingHelper flags; roles in low word; options in high word
  96. #define EMBDHLP_INPROC_HANDLER   0x0000L
  97. #define EMBDHLP_INPROC_SERVER    0x0001L
  98. #define EMBDHLP_CREATENOW    0x00000000L
  99. #define EMBDHLP_DELAYCREATE  0x00010000L
  100.  
  101. /* extended create function flags */
  102. #define OLECREATE_LEAVERUNNING    0x00000001
  103.  
  104. /* pull in the MIDL generated header */
  105.  
  106. #include <oleidl.h>
  107.  
  108.  
  109. #ifdef _MAC
  110. typedef struct tagOleMBarRec
  111. {
  112.         long reserved;
  113. } OleMBarRec, *OleMBarPtr, **OleMBarHandle;
  114.  
  115. #define noAxis  3               // indicates no grow or size in any direction
  116. // see mac #defines noConstraint, hAxisOnly, vAxisOnly
  117.  
  118. #endif //_MAC
  119.  
  120.  
  121.  
  122. /****** DV APIs ***********************************************************/
  123.  
  124.  
  125. WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133. /****** OLE API Prototypes ************************************************/
  134.  
  135. WINOLEAPI_(DWORD) OleBuildVersion( VOID );
  136.  
  137. /* helper functions */
  138. WINOLEAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
  139. WINOLEAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
  140. WINOLEAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
  141. WINOLEAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
  142. WINOLEAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
  143. WINOLEAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType);
  144.  
  145.  
  146. /* init/term */
  147.  
  148. WINOLEAPI OleInitialize(LPVOID pvReserved);
  149. WINOLEAPI_(void) OleUninitialize(void);
  150.  
  151.  
  152. /* APIs to query whether (Embedded/Linked) object can be created from
  153.    the data object */
  154.  
  155. WINOLEAPI  OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
  156. WINOLEAPI  OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
  157.  
  158.  
  159. /* Object creation APIs */
  160.  
  161. WINOLEAPI  OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
  162.                 LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
  163.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  164.  
  165. WINOLEAPI  OleCreateEx(REFCLSID rclsid, REFIID riid, DWORD dwFlags,
  166.                 DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  167.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  168.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  169.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  170.  
  171. WINOLEAPI  OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  172.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  173.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  174.                 LPVOID FAR* ppvObj);
  175.  
  176. WINOLEAPI  OleCreateFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
  177.                 DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  178.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  179.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  180.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  181.  
  182. WINOLEAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  183.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  184.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  185.                 LPVOID FAR* ppvObj);
  186.  
  187. WINOLEAPI  OleCreateLinkFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid,
  188.                 DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  189.                 LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  190.                 DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  191.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  192.  
  193. WINOLEAPI  OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
  194.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  195.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  196.                 LPVOID FAR* ppvObj);
  197.  
  198.  
  199. WINOLEAPI  OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
  200.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  201.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  202.  
  203. WINOLEAPI  OleCreateLinkEx(LPMONIKER pmkLinkSrc, REFIID riid,
  204.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  205.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  206.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  207.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  208.  
  209. WINOLEAPI  OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
  210.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  211.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  212.  
  213. WINOLEAPI  OleCreateLinkToFileEx(LPCOLESTR lpszFileName, REFIID riid,
  214.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  215.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  216.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  217.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  218.  
  219. WINOLEAPI  OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
  220.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  221.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  222.  
  223. WINOLEAPI  OleCreateFromFileEx(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
  224.             DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf,
  225.             LPFORMATETC rgFormatEtc, IAdviseSink FAR* lpAdviseSink,
  226.             DWORD FAR* rgdwConnection, LPOLECLIENTSITE pClientSite,
  227.             LPSTORAGE pStg, LPVOID FAR* ppvObj);
  228.  
  229. WINOLEAPI  OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
  230.             LPVOID FAR* ppvObj);
  231.  
  232. WINOLEAPI  OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
  233.  
  234. WINOLEAPI  OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
  235. WINOLEAPI  OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
  236.  
  237.  
  238. WINOLEAPI  OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
  239. WINOLEAPI  OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
  240.  
  241.  
  242. /* Drag/Drop APIs */
  243.  
  244. WINOLEAPI  RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
  245. WINOLEAPI  RevokeDragDrop(HWND hwnd);
  246. WINOLEAPI  DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
  247.             DWORD dwOKEffects, LPDWORD pdwEffect);
  248.  
  249. /* Clipboard APIs */
  250.  
  251. WINOLEAPI  OleSetClipboard(LPDATAOBJECT pDataObj);
  252. WINOLEAPI  OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
  253. WINOLEAPI  OleFlushClipboard(void);
  254. WINOLEAPI  OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
  255.  
  256.  
  257. /* InPlace Editing APIs */
  258.  
  259. WINOLEAPI_(HOLEMENU)   OleCreateMenuDescriptor (HMENU hmenuCombined,
  260.                                 LPOLEMENUGROUPWIDTHS lpMenuWidths);
  261. WINOLEAPI              OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
  262.                                 HWND hwndActiveObject,
  263.                                 LPOLEINPLACEFRAME lpFrame,
  264.                                 LPOLEINPLACEACTIVEOBJECT lpActiveObj);
  265. WINOLEAPI              OleDestroyMenuDescriptor (HOLEMENU holemenu);
  266.  
  267. WINOLEAPI              OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
  268.                             LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
  269.  
  270.  
  271. /* Helper APIs */
  272. WINOLEAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
  273.                         UINT uiFlags);
  274.  
  275. WINOLEAPI          OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
  276.                     LPCRECT lprcBounds);
  277.  
  278. WINOLEAPI          OleRun(LPUNKNOWN pUnknown);
  279. WINOLEAPI_(BOOL)   OleIsRunning(LPOLEOBJECT pObject);
  280. WINOLEAPI          OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
  281. WINOLEAPI_(void)   ReleaseStgMedium(LPSTGMEDIUM);
  282. WINOLEAPI          CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
  283.  
  284. WINOLEAPI          OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  285.                     REFIID riid, LPVOID FAR* lplpObj);
  286.  
  287. WINOLEAPI          OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  288.                     DWORD flags, LPCLASSFACTORY pCF,
  289.                                         REFIID riid, LPVOID FAR* lplpObj);
  290.  
  291. WINOLEAPI_(BOOL)   IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
  292.                                         WORD FAR* lpwCmd);
  293. /* Icon extraction Helper APIs */
  294.  
  295. WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
  296.  
  297. WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid,     LPOLESTR lpszLabel,
  298.                                         BOOL fUseTypeAsLabel);
  299.  
  300. WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel,
  301.                                         LPOLESTR lpszSourceFile, UINT iIconIndex);
  302.  
  303.  
  304.  
  305. /* Registration Database Helper APIs */
  306.  
  307. WINOLEAPI                  OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
  308.                                         LPOLESTR FAR* pszUserType);
  309.  
  310. WINOLEAPI                  OleRegGetMiscStatus     (REFCLSID clsid, DWORD dwAspect,
  311.                                         DWORD FAR* pdwStatus);
  312.  
  313. WINOLEAPI                  OleRegEnumFormatEtc     (REFCLSID clsid, DWORD dwDirection,
  314.                                         LPENUMFORMATETC FAR* ppenum);
  315.  
  316. WINOLEAPI                  OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
  317.  
  318. #ifdef _MAC
  319. /* WlmOLE helper APIs */
  320.  
  321. WINOLEAPI WlmOleCheckoutMacInterface(LPUNKNOWN pUnk, LPVOID* ppv);
  322. WINOLEAPI WlmOleCheckinMacInterface(LPUNKNOWN pUnk);
  323. WINOLEAPI WlmOleWrapMacInterface(LPUNKNOWN pUnk, REFIID riid, LPVOID* ppv);
  324. WINOLEAPI WlmOleUnwrapMacInterface(LPVOID pv);
  325.  
  326. WINOLEAPI WlmOleCheckoutWinInterface(LPVOID pUnk, LPUNKNOWN* ppv);
  327. WINOLEAPI WlmOleCheckinWinInterface(LPVOID pUnk);
  328. WINOLEAPI WlmOleWrapWinInterface(LPVOID pUnk, REFIID riid, LPUNKNOWN* ppv);
  329. WINOLEAPI WlmOleUnwrapWinInterface(LPVOID pv);
  330.  
  331. WINOLEAPI_(void) WlmOleVersion(void);
  332. WINOLEAPI_(void) WlmOleSetInPlaceWindow(HWND hwnd);
  333.  
  334. typedef HRESULT (STDAPICALLTYPE* OLEWRAPPROC) (REFIID riid, LPVOID* ppvWin, LPVOID* ppvMac);
  335. WINOLEAPI WlmOleRegisterUserWrap(OLEWRAPPROC procNew, OLEWRAPPROC* pprocOld);
  336. #endif
  337.  
  338.  
  339. /* OLE 1.0 conversion APIS */
  340.  
  341. /***** OLE 1.0 OLESTREAM declarations *************************************/
  342.  
  343. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  344.  
  345. typedef struct _OLESTREAMVTBL
  346. {
  347.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  348.     DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
  349. } OLESTREAMVTBL;
  350. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  351.  
  352. typedef struct _OLESTREAM
  353. {
  354.     LPOLESTREAMVTBL lpstbl;
  355. } OLESTREAM;
  356.  
  357.  
  358. WINOLEAPI OleConvertOLESTREAMToIStorage
  359.     (LPOLESTREAM                lpolestream,
  360.     LPSTORAGE                   pstg,
  361.     const DVTARGETDEVICE FAR*   ptd);
  362.  
  363. WINOLEAPI OleConvertIStorageToOLESTREAM
  364.     (LPSTORAGE      pstg,
  365.     LPOLESTREAM     lpolestream);
  366.  
  367.  
  368. /* Storage Utility APIs */
  369. WINOLEAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
  370. WINOLEAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  371.                                     LPLOCKBYTES FAR* pplkbyt);
  372.  
  373. WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
  374. WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  375.                                 LPSTREAM FAR* ppstm);
  376.  
  377.  
  378. /* ConvertTo APIS */
  379.  
  380. WINOLEAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
  381. WINOLEAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
  382. WINOLEAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
  383. WINOLEAPI GetConvertStg(LPSTORAGE pStg);
  384. WINOLEAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
  385.  
  386.  
  387. WINOLEAPI OleConvertIStorageToOLESTREAMEx
  388.     (LPSTORAGE          pstg,
  389.                                     // Presentation data to OLESTREAM
  390.      CLIPFORMAT         cfFormat,   //      format
  391.      LONG               lWidth,     //      width
  392.      LONG               lHeight,    //      height
  393.      DWORD              dwSize,     //      size in bytes
  394.      LPSTGMEDIUM        pmedium,    //      bits
  395.      LPOLESTREAM        polestm);
  396.  
  397. WINOLEAPI OleConvertOLESTREAMToIStorageEx
  398.     (LPOLESTREAM        polestm,
  399.      LPSTORAGE          pstg,
  400.                                     // Presentation data from OLESTREAM
  401.      CLIPFORMAT FAR*    pcfFormat,  //      format
  402.      LONG FAR*          plwWidth,   //      width
  403.      LONG FAR*          plHeight,   //      height
  404.      DWORD FAR*         pdwSize,    //      size in bytes
  405.      LPSTGMEDIUM        pmedium);   //      bits
  406.  
  407. #ifndef _MAC
  408. #ifndef RC_INVOKED
  409. #include <poppack.h>
  410. #endif // RC_INVOKED
  411.  
  412. #else // _MAC
  413.  
  414. #ifndef __MACAPI__
  415. #include <macapi.h>
  416. #endif
  417.  
  418. #ifdef _WIN32
  419. #include "macname2.h"
  420. #endif // _WIN32
  421.  
  422. #endif // _MAC
  423.  
  424. #endif     // __OLE2_H__
  425.  
  426.