home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / msinc.pak / OLE2.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  55KB  |  1,657 lines

  1.  
  2. /*****************************************************************************\
  3. *                                                                             *
  4. * ole2.h -              Main OLE2 header; includes all subcomponents                              *
  5. *                                                                             *
  6. *               OLE Version 2.0                                               *
  7. *                                                                             *
  8. \*****************************************************************************/
  9.  
  10. /*
  11.  *      C/C++ Run Time Library - Version 6.5
  12.  *
  13.  *      Copyright (c) 1994 by Borland International
  14.  *      All Rights Reserved.
  15.  *
  16.  */
  17.  
  18. #if !defined(__FLAT__)
  19.  
  20. #if !defined( _OLE2_H_ )
  21. #define _OLE2_H_
  22. #define __OLE2_H
  23.  
  24. #ifndef RC_INVOKED
  25. #pragma warning(disable:4001)
  26. #endif  /* RC_INVOKED */
  27.  
  28. #include <string.h>
  29.  
  30. /****** Standard Object Definitions *****************************************/
  31.  
  32. #include <compobj.h>
  33.  
  34.  
  35. // *************** FACILITY_ITF scodes common to all interfaces ************
  36. //
  37. // By convention, OLE interfaces divide the FACILITY_ITF range of errors
  38. // into nonoverlapping subranges.  If an interface returns a FACILITY_ITF
  39. // scode, it must be from the range associated with that interface or from
  40. // the shared range: OLE_E_FIRST...OLE_E_LAST.
  41. //
  42.  
  43. // error codes
  44.  
  45. #define OLE_E_OLEVERB               (OLE_E_FIRST)
  46. // invalid OLEVERB structure
  47.  
  48. #define OLE_E_ADVF                  (OLE_E_FIRST+1)
  49. // invalid advise flags
  50.  
  51. #define OLE_E_ENUM_NOMORE           (OLE_E_FIRST+2)
  52. // you can't enuemrate any more, because the associated data is missing
  53.  
  54. #define OLE_E_ADVISENOTSUPPORTED    (OLE_E_FIRST+3)
  55. // this implementation doesn't take advises
  56.  
  57. #define OLE_E_NOCONNECTION          (OLE_E_FIRST+4)
  58. // there is no connection for this connection id
  59.  
  60. #define OLE_E_NOTRUNNING            (OLE_E_FIRST+5)
  61. // need run the object to perform this operation
  62.  
  63. #define OLE_E_NOCACHE               (OLE_E_FIRST+6)
  64. // there is no cache to operate on
  65.  
  66. #define OLE_E_BLANK                 (OLE_E_FIRST+7)
  67. // Uninitialized object
  68.  
  69. #define OLE_E_CLASSDIFF             (OLE_E_FIRST+8)
  70. // linked object's source class has changed
  71.  
  72. #define OLE_E_CANT_GETMONIKER       (OLE_E_FIRST+9)
  73. // not able to get the moniker of the object
  74.  
  75. #define OLE_E_CANT_BINDTOSOURCE     (OLE_E_FIRST+10)
  76. // not able to bind to the source
  77.  
  78. #define OLE_E_STATIC                (OLE_E_FIRST+11)
  79. // object is static, operation not allowed
  80.  
  81. #define OLE_E_PROMPTSAVECANCELLED   (OLE_E_FIRST+12)
  82. // user cancelled out of save dialog
  83.  
  84. #define OLE_E_INVALIDRECT           (OLE_E_FIRST+13)
  85. // invalid rectangle
  86.  
  87. #define OLE_E_WRONGCOMPOBJ          (OLE_E_FIRST+14)
  88. // compobj.dll is too old for the ole2.dll initialized
  89.  
  90. #define OLE_E_INVALIDHWND           (OLE_E_FIRST+15)
  91. // invalid window handle
  92.  
  93. #define OLE_E_NOT_INPLACEACTIVE     (OLE_E_FIRST+16)
  94. // object is not in any of the inplace active states
  95.  
  96. #define OLE_E_CANTCONVERT                       (OLE_E_FIRST+17)
  97. // not able to convert the object
  98.  
  99. #define OLE_E_NOSTORAGE                         (OLE_E_FIRST+18)
  100. // not able to perform the operation because object is not given storage yet.
  101.  
  102.  
  103. #define DVGEN_E_FIRST               (OLE_E_FIRST+100)
  104.  
  105. #define DV_E_FORMATETC              (DVGEN_E_FIRST)
  106. // invalid FORMATETC structure
  107.  
  108. #define DV_E_DVTARGETDEVICE         (DVGEN_E_FIRST+1)
  109. // invalid DVTARGETDEVICE structure
  110.  
  111. #define DV_E_STGMEDIUM              (DVGEN_E_FIRST+2)
  112. // invalid STDGMEDIUM structure
  113.  
  114. #define DV_E_STATDATA               (DVGEN_E_FIRST+3)
  115. // invalid STATDATA structure
  116.  
  117. #define DV_E_LINDEX                 (DVGEN_E_FIRST+4)
  118. // invalid lindex
  119.  
  120. #define DV_E_TYMED                  (DVGEN_E_FIRST+5)
  121. // invalid tymed
  122.  
  123. #define DV_E_CLIPFORMAT             (DVGEN_E_FIRST+6)
  124. // invalid clipboard format
  125.  
  126. #define DV_E_DVASPECT               (DVGEN_E_FIRST+7)
  127. // invalid aspect(s)
  128.  
  129. #define DV_E_DVTARGETDEVICE_SIZE    (DVGEN_E_FIRST+8)
  130. // tdSize paramter of the DVTARGETDEVICE structure is invalid
  131.  
  132. #define DV_E_NOIVIEWOBJECT          (DVGEN_E_FIRST+9)
  133. // object doesn't support IViewObject interface
  134.  
  135.  
  136. // Success codes
  137.  
  138. #define OLE_S_USEREG                (OLE_S_FIRST)
  139. // use the reg database to provide the requested info
  140.  
  141. #define OLE_S_STATIC                (OLE_S_FIRST+1)
  142. // success, but static
  143.  
  144. #define OLE_S_MAC_CLIPFORMAT        (OLE_S_FIRST+2)
  145. // macintosh clipboard format
  146.  
  147. //*************************** Interface or API specific scodes *************
  148.  
  149. // Errors for OleConvertOLESTREAMToIStorage and OleConvertIStorageToOLESTREAM
  150.  
  151. // OLESTREAM Get method failed
  152. #define CONVERT10_E_OLESTREAM_GET       (CONVERT10_E_FIRST + 0)
  153.  
  154. // OLESTREAM Put method failed
  155. #define CONVERT10_E_OLESTREAM_PUT       (CONVERT10_E_FIRST + 1)
  156.  
  157. // Contents of the OLESTREAM not in correct format
  158. #define CONVERT10_E_OLESTREAM_FMT       (CONVERT10_E_FIRST + 2)
  159.  
  160. // There was in an error in a Windows GDI call while converting the bitmap
  161. // to a DIB.
  162. #define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB (CONVERT10_E_FIRST + 3)
  163.  
  164. // Contents of the IStorage not in correct format
  165. #define CONVERT10_E_STG_FMT             (CONVERT10_E_FIRST + 4)
  166.  
  167. // Contents of IStorage is missing one of the standard streams ("\1CompObj",
  168. // "\1Ole", "\2OlePres000").  This may be the storage for a DLL object, or a
  169. // class that does not use the def handler.
  170. #define CONVERT10_E_STG_NO_STD_STREAM   (CONVERT10_E_FIRST + 5)
  171.  
  172. // There was in an error in a Windows GDI call while converting the DIB
  173. // to a bitmap.
  174. #define CONVERT10_E_STG_DIB_TO_BITMAP   (CONVERT10_E_FIRST + 6)
  175.  
  176.  
  177. // Returned by either API, this scode indicates that the original object
  178. //  had no presentation, therefore the converted object does not either.
  179. #define CONVERT10_S_NO_PRESENTATION     (CONVERT10_S_FIRST + 0)
  180.  
  181.  
  182. // Errors for Clipboard functions
  183.  
  184. // OpenClipboard Failed
  185. #define CLIPBRD_E_CANT_OPEN     (CLIPBRD_E_FIRST + 0)
  186.  
  187. // EmptyClipboard Failed
  188. #define CLIPBRD_E_CANT_EMPTY        (CLIPBRD_E_FIRST + 1)
  189.  
  190. // SetClipboard Failed
  191. #define CLIPBRD_E_CANT_SET          (CLIPBRD_E_FIRST + 2)
  192.  
  193. // Data on clipboard is invalid
  194. #define CLIPBRD_E_BAD_DATA          (CLIPBRD_E_FIRST + 3)
  195.  
  196. // CloseClipboard Failed
  197. #define CLIPBRD_E_CANT_CLOSE        (CLIPBRD_E_FIRST + 4)
  198.  
  199.  
  200. /****** OLE value types *****************************************************/
  201.  
  202. /* rendering options */
  203. typedef enum tagOLERENDER
  204. {
  205.     OLERENDER_NONE   = 0,
  206.     OLERENDER_DRAW   = 1,
  207.     OLERENDER_FORMAT = 2,
  208.     OLERENDER_ASIS   = 3
  209. } OLERENDER;
  210. typedef  OLERENDER FAR* LPOLERENDER;
  211.  
  212. // OLE verb; returned by IEnumOLEVERB
  213. typedef struct FARSTRUCT tagOLEVERB
  214. {
  215.     LONG    lVerb;
  216.     LPSTR   lpszVerbName;
  217.     DWORD   fuFlags;
  218.     DWORD       grfAttribs;
  219. } OLEVERB, FAR* LPOLEVERB;
  220.  
  221.  
  222. // Bitwise verb attributes used in OLEVERB.grfAttribs
  223. typedef enum tagOLEVERBATTRIB // bitwise
  224. {
  225.     OLEVERBATTRIB_NEVERDIRTIES = 1,
  226.     OLEVERBATTRIB_ONCONTAINERMENU = 2
  227. } OLEVERBATTRIB;
  228.  
  229.  
  230. // IOleObject::GetUserType optons; determines which form of the string to use
  231. typedef enum tagUSERCLASSTYPE
  232. {
  233.     USERCLASSTYPE_FULL = 1,
  234.     USERCLASSTYPE_SHORT= 2,
  235.     USERCLASSTYPE_APPNAME= 3,
  236. } USERCLASSTYPE;
  237.  
  238.  
  239. // bits returned from IOleObject::GetMistStatus
  240. typedef enum tagOLEMISC // bitwise
  241. {
  242.     OLEMISC_RECOMPOSEONRESIZE                           = 1,
  243.     OLEMISC_ONLYICONIC                                          = 2,
  244.     OLEMISC_INSERTNOTREPLACE                            = 4,
  245.     OLEMISC_STATIC                                                      = 8,
  246.     OLEMISC_CANTLINKINSIDE                                      = 16,
  247.     OLEMISC_CANLINKBYOLE1                                       = 32,
  248.     OLEMISC_ISLINKOBJECT                                        = 64,
  249.     OLEMISC_INSIDEOUT                                           = 128,
  250.     OLEMISC_ACTIVATEWHENVISIBLE                         = 256,
  251.     OLEMISC_RENDERINGISDEVICEINDEPENDENT        = 512
  252. } OLEMISC;
  253.  
  254.  
  255. // IOleObject::Close options
  256. typedef enum tagOLECLOSE
  257. {
  258.     OLECLOSE_SAVEIFDIRTY = 0,
  259.     OLECLOSE_NOSAVE      = 1,
  260.     OLECLOSE_PROMPTSAVE  = 2
  261. } OLECLOSE;
  262.  
  263.  
  264. // IOleObject::GetMoniker and IOleClientSite::GetMoniker options; determines
  265. // if and how monikers should be assigned.
  266. typedef enum tagOLEGETMONIKER
  267. {
  268.     OLEGETMONIKER_ONLYIFTHERE=1,
  269.     OLEGETMONIKER_FORCEASSIGN=2,
  270.     OLEGETMONIKER_UNASSIGN=3,
  271.     OLEGETMONIKER_TEMPFORUSER=4
  272. } OLEGETMONIKER;
  273.  
  274.  
  275. // IOleObject::GetMoniker, IOleObject::SetMoniker and
  276. // IOleClientSite::GetMoniker options; determines which moniker to use
  277. typedef enum tagOLEWHICHMK
  278. {
  279.     OLEWHICHMK_CONTAINER=1,
  280.     OLEWHICHMK_OBJREL=2,
  281.     OLEWHICHMK_OBJFULL=3
  282. } OLEWHICHMK;
  283.  
  284. #if !defined(__SIZEL_POINTL_RECTL_DEFINED)
  285. #define __SIZEL_POINTL_RECTL_DEFINED
  286. #ifdef WIN32
  287. #define LPSIZEL PSIZEL
  288. #else
  289. typedef struct FARSTRUCT tagSIZEL
  290. {
  291.     long cx;
  292.     long cy;
  293. } SIZEL, FAR* LPSIZEL;
  294. #endif
  295.  
  296. #ifdef WIN32
  297. #define LPRECTL PRECTL
  298. #else
  299. typedef struct FARSTRUCT tagRECTL
  300. {
  301.     long    left;
  302.     long    top;
  303.     long    right;
  304.     long    bottom;
  305. } RECTL, FAR* LPRECTL;
  306.  
  307. typedef struct FARSTRUCT tagPOINTL {
  308.     LONG x;
  309.     LONG y;
  310. } POINTL;
  311.  
  312. #endif
  313. #endif /* __SIZEL_POINTL_RECTL_DEFINED */
  314.  
  315. #ifndef LPCRECT
  316. typedef const RECT FAR* LPCRECT;
  317. #endif
  318.  
  319. #ifndef LPCRECTL
  320. typedef const RECTL FAR* LPCRECTL;
  321. #endif
  322.  
  323.  
  324. // for OleCreateEmbeddingHelper flags; roles in low word; options in high word
  325. #define EMBDHLP_INPROC_HANDLER   0x0000L // role is handler; implementation is
  326.                                          // default handler; pCF can be NULL
  327. #define EMBDHLP_INPROC_SERVER    0x0001L // role is server; pCF can't be NULL
  328.  
  329. #define EMBDHLP_CREATENOW    0x00000000L // create using pCF immediately; if pCF
  330.                                          // is NULL, uses std remoting handler
  331. #define EMBDHLP_DELAYCREATE  0x00010000L // delayed create; must supply pCF
  332.  
  333.  
  334. // NOTE: OleCreateEmbeddingHelper(clsid, pUnkOuter,
  335. //              EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW, NULL, riid, lplpObj)
  336. // is the same as OleCreateDefaultHandler(clsid, pUnkOuter, riid, lplpObj);
  337. // i.e., the embedding helper is the default handler in various roles.
  338.  
  339.  
  340. /***** OLE 1.0 OLESTREAM declarations *************************************/
  341.  
  342. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  343.  
  344. typedef struct _OLESTREAMVTBL
  345. {
  346.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  347.     DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
  348. } OLESTREAMVTBL;
  349. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  350.  
  351. typedef struct _OLESTREAM
  352. {
  353.     LPOLESTREAMVTBL lpstbl;
  354. } OLESTREAM;
  355.  
  356.  
  357. /****** Clipboard Data structures *****************************************/
  358.  
  359. typedef struct tagOBJECTDESCRIPTOR
  360. {
  361.    ULONG    cbSize;              // Size of structure in bytes
  362.    CLSID    clsid;               // CLSID of data being transferred
  363.    DWORD    dwDrawAspect;        // Display aspect of the object
  364.                  //     normally DVASPECT_CONTENT or ICON.
  365.                  //     dwDrawAspect will be 0 (which is NOT
  366.                  //     DVASPECT_CONTENT) if the copier or
  367.                  //     dragsource didn't draw the object to
  368.                  //     begin with.
  369.    SIZEL    sizel;               // size of the object in HIMETRIC
  370.                  //    sizel is opt.: will be (0,0) for apps
  371.                  //    which don't draw the object being
  372.                  //    transferred
  373.    POINTL   pointl;              // Offset in HIMETRIC units from the
  374.                  //    upper-left corner of the obj where the
  375.                  //    mouse went down for the drag.
  376.                  //    NOTE: y coordinates increase downward.
  377.                  //          x coordinates increase to right
  378.                  //    pointl is opt.; it is only meaningful
  379.                  //    if object is transfered via drag/drop.
  380.                  //    (0, 0) if mouse position is unspecified
  381.                  //    (eg. when obj transfered via clipboard)
  382.    DWORD    dwStatus;            // Misc. status flags for object. Flags are
  383.                  //    defined by OLEMISC enum. these flags
  384.                  //    are as would be returned
  385.                  //    by IOleObject::GetMiscStatus.
  386.    DWORD    dwFullUserTypeName;  // Offset from beginning of structure to
  387.                  //    null-terminated string that specifies
  388.                  //    Full User Type Name of the object.
  389.                  //    0 indicates string not present.
  390.    DWORD    dwSrcOfCopy;         // Offset from beginning of structure to
  391.                  //    null-terminated string that specifies
  392.                  //    source of the transfer.
  393.                  //    dwSrcOfCOpy is normally implemented as
  394.                  //    the display name of the temp-for-user
  395.                  //    moniker which identifies the source of
  396.                  //    the data.
  397.                  //    0 indicates string not present.
  398.                  //    NOTE: moniker assignment is NOT forced.
  399.                  //    see IOleObject::GetMoniker(
  400.                  //                OLEGETMONIKER_TEMPFORUSER)
  401.  
  402.  /* variable sized string data may appear here */
  403.  
  404. } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,  FAR *LPOBJECTDESCRIPTOR,
  405.   LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, FAR *LPLINKSRCDESCRIPTOR;
  406.  
  407.  
  408.  
  409. /* verbs */
  410. #define OLEIVERB_PRIMARY            (0L)
  411. #define OLEIVERB_SHOW               (-1L)
  412. #define OLEIVERB_OPEN               (-2L)
  413. #define OLEIVERB_HIDE               (-3L)
  414. #define OLEIVERB_UIACTIVATE         (-4L)
  415. #define OLEIVERB_INPLACEACTIVATE    (-5L)
  416. #define OLEIVERB_DISCARDUNDOSTATE   (-6L)
  417.  
  418.  
  419. //      forward type declarations
  420. #if defined(__cplusplus)
  421. interface IOleClientSite;
  422. interface IOleContainer;
  423. interface IOleObject;
  424. #else
  425. typedef interface IOleClientSite IOleClientSite;
  426. typedef interface IOleContainer IOleContainer;
  427. typedef interface IOleObject IOleObject;
  428. #endif
  429.  
  430. typedef         IOleObject FAR* LPOLEOBJECT;
  431. typedef     IOleClientSite FAR* LPOLECLIENTSITE;
  432. typedef       IOleContainer FAR* LPOLECONTAINER;
  433.  
  434.  
  435. /****** OLE GUIDs *********************************************************/
  436.  
  437. #ifndef INITGUID
  438. #include "oleguid.h"
  439. #endif
  440.  
  441.  
  442. /****** Other Major Interfaces ********************************************/
  443.  
  444. #include <dvobj.h>
  445.  
  446. #include <storage.h>
  447.  
  448.  
  449.  
  450. /****** IDrop??? Interfaces ********************************************/
  451.  
  452. #define MK_ALT 0x0020
  453.  
  454.  
  455. #define DROPEFFECT_NONE     0
  456. #define DROPEFFECT_COPY     1
  457. #define DROPEFFECT_MOVE     2
  458. #define DROPEFFECT_LINK     4
  459. #define DROPEFFECT_SCROLL   0x80000000L
  460.  
  461. // default inset-width of the hot zone, in pixels
  462. //   typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET)
  463. #define DD_DEFSCROLLINSET               11
  464.  
  465. // default delay before scrolling, in milliseconds
  466. //   typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY)
  467. #define DD_DEFSCROLLDELAY               50
  468.  
  469. // default scroll interval, in milliseconds
  470. //   typical use: GetProfileInt("windows","DragScrollInterval",
  471. //                              DD_DEFSCROLLINTERVAL)
  472. #define DD_DEFSCROLLINTERVAL    50
  473.  
  474. // default delay before dragging should start, in milliseconds
  475. //   typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY)
  476. #define DD_DEFDRAGDELAY         200
  477.  
  478. // default minimum distance (radius) before dragging should start, in pixels
  479. //   typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST)
  480. #define DD_DEFDRAGMINDIST               2
  481.  
  482.  
  483.  
  484. /* Dragdrop specific error codes */
  485.  
  486. #define DRAGDROP_E_NOTREGISTERED        (DRAGDROP_E_FIRST)
  487. // trying to revoke a drop target that has not been registered
  488.  
  489. #define DRAGDROP_E_ALREADYREGISTERED    (DRAGDROP_E_FIRST+1)
  490. // this window has already been registered as a drop target
  491.  
  492. #define DRAGDROP_E_INVALIDHWND          (DRAGDROP_E_FIRST+2)
  493. // invalid HWND
  494.  
  495.  
  496. #define DRAGDROP_S_DROP                 (DRAGDROP_S_FIRST + 0)
  497. // successful drop took place
  498.  
  499. #define DRAGDROP_S_CANCEL               (DRAGDROP_S_FIRST + 1)
  500. // drag-drop operation canceled
  501.  
  502. #define DRAGDROP_S_USEDEFAULTCURSORS    (DRAGDROP_S_FIRST + 2)
  503. // use the default cursor
  504.  
  505.  
  506. #undef INTERFACE
  507. #define INTERFACE   IDropTarget
  508.  
  509. DECLARE_INTERFACE_(IDropTarget, IUnknown)
  510. {
  511.     // *** IUnknown methods ***
  512.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  513.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  514.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  515.  
  516.     // *** IDropTarget methods ***
  517.     STDMETHOD(DragEnter) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  518.     STDMETHOD(DragOver) (THIS_ DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  519.     STDMETHOD(DragLeave) (THIS) PURE;
  520.     STDMETHOD(Drop) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  521. };
  522. typedef         IDropTarget FAR* LPDROPTARGET;
  523.  
  524.  
  525.  
  526. #undef INTERFACE
  527. #define INTERFACE   IDropSource
  528.  
  529. DECLARE_INTERFACE_(IDropSource, IUnknown)
  530. {
  531.     // *** IUnknown methods ***
  532.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  533.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  534.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  535.  
  536.     // *** IDropSource methods ***
  537.     STDMETHOD(QueryContinueDrag) (THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE;
  538.     STDMETHOD(GiveFeedback) (THIS_ DWORD dwEffect) PURE;
  539. };
  540. typedef         IDropSource FAR* LPDROPSOURCE;
  541.  
  542.  
  543.  
  544. /****** IPersist??? Interfaces ********************************************/
  545.  
  546.  
  547. #undef INTERFACE
  548. #define INTERFACE   IPersist
  549.  
  550. DECLARE_INTERFACE_(IPersist, IUnknown)
  551. {
  552.     // *** IUnknown methods ***
  553.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  554.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  555.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  556.  
  557.     // *** IPersist methods ***
  558.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  559. };
  560. typedef            IPersist FAR* LPPERSIST;
  561.  
  562.  
  563.  
  564. #undef INTERFACE
  565. #define INTERFACE   IPersistStorage
  566.  
  567. DECLARE_INTERFACE_(IPersistStorage, IPersist)
  568. {
  569.     // *** IUnknown methods ***
  570.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  571.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  572.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  573.  
  574.     // *** IPersist methods ***
  575.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  576.  
  577.     // *** IPersistStorage methods ***
  578.     STDMETHOD(IsDirty) (THIS) PURE;
  579.     STDMETHOD(InitNew) (THIS_ LPSTORAGE pStg) PURE;
  580.     STDMETHOD(Load) (THIS_ LPSTORAGE pStg) PURE;
  581.     STDMETHOD(Save) (THIS_ LPSTORAGE pStgSave, BOOL fSameAsLoad) PURE;
  582.     STDMETHOD(SaveCompleted) (THIS_ LPSTORAGE pStgNew) PURE;
  583.     STDMETHOD(HandsOffStorage) (THIS) PURE;
  584. };
  585. typedef         IPersistStorage FAR* LPPERSISTSTORAGE;
  586.  
  587.  
  588.  
  589. #undef INTERFACE
  590. #define INTERFACE   IPersistStream
  591.  
  592. DECLARE_INTERFACE_(IPersistStream, IPersist)
  593. {
  594.     // *** IUnknown methods ***
  595.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  596.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  597.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  598.  
  599.     // *** IPersist methods ***
  600.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  601.  
  602.     // *** IPersistStream methods ***
  603.     STDMETHOD(IsDirty) (THIS) PURE;
  604.     STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
  605.     STDMETHOD(Save) (THIS_ LPSTREAM pStm,
  606.             BOOL fClearDirty) PURE;
  607.     STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR* pcbSize) PURE;
  608. };
  609. typedef          IPersistStream FAR* LPPERSISTSTREAM;
  610.  
  611.  
  612.  
  613. #undef INTERFACE
  614. #define INTERFACE   IPersistFile
  615.  
  616. DECLARE_INTERFACE_(IPersistFile, IPersist)
  617. {
  618.     // *** IUnknown methods ***
  619.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  620.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  621.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  622.  
  623.     // *** IPersist methods ***
  624.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  625.  
  626.     // *** IPersistFile methods ***
  627.     STDMETHOD(IsDirty) (THIS) PURE;
  628.     STDMETHOD(Load) (THIS_ LPCSTR lpszFileName, DWORD grfMode) PURE;
  629.     STDMETHOD(Save) (THIS_ LPCSTR lpszFileName, BOOL fRemember) PURE;
  630.     STDMETHOD(SaveCompleted) (THIS_ LPCSTR lpszFileName) PURE;
  631.     STDMETHOD(GetCurFile) (THIS_ LPSTR FAR* lplpszFileName) PURE;
  632. };
  633. typedef            IPersistFile FAR* LPPERSISTFILE;
  634.  
  635.  
  636. /****** Moniker Object Interfaces ******************************************/
  637.  
  638. #include <moniker.h>
  639.  
  640.  
  641. /****** OLE Object Interfaces ******************************************/
  642.  
  643.  
  644. #undef  INTERFACE
  645. #define INTERFACE   IEnumOLEVERB
  646.  
  647. DECLARE_INTERFACE_(IEnumOLEVERB, IUnknown)
  648. {
  649.     // *** IUnknown methods ***
  650.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  651.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  652.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  653.  
  654.     // *** IEnumOLEVERB methods ***
  655.     STDMETHOD(Next) (THIS_ ULONG celt, LPOLEVERB rgelt, ULONG FAR* pceltFetched) PURE;
  656.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  657.     STDMETHOD(Reset) (THIS) PURE;
  658.     STDMETHOD(Clone) (THIS_ IEnumOLEVERB FAR* FAR* ppenm) PURE;
  659. };
  660. typedef         IEnumOLEVERB FAR* LPENUMOLEVERB;
  661.  
  662.  
  663.  
  664.  
  665. #undef  INTERFACE
  666. #define INTERFACE   IOleObject
  667.  
  668. #define OLEOBJ_E_NOVERBS                (OLEOBJ_E_FIRST + 0)
  669.  
  670. #define OLEOBJ_E_INVALIDVERB            (OLEOBJ_E_FIRST + 1)
  671.  
  672. #define OLEOBJ_S_INVALIDVERB            (OLEOBJ_S_FIRST + 0)
  673.  
  674. #define OLEOBJ_S_CANNOT_DOVERB_NOW      (OLEOBJ_S_FIRST + 1)
  675. // verb number is valid but verb cannot be done now, for instance
  676. // hiding a link or hiding a visible OLE 1.0 server
  677.  
  678. #define OLEOBJ_S_INVALIDHWND            (OLEOBJ_S_FIRST + 2)
  679. // invalid hwnd passed
  680.  
  681.  
  682. DECLARE_INTERFACE_(IOleObject, IUnknown)
  683. {
  684.     // *** IUnknown methods ***
  685.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  686.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  687.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  688.  
  689.     // *** IOleObject methods ***
  690.     STDMETHOD(SetClientSite) (THIS_ LPOLECLIENTSITE pClientSite) PURE;
  691.     STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR* ppClientSite) PURE;
  692.     STDMETHOD(SetHostNames) (THIS_ LPCSTR szContainerApp, LPCSTR szContainerObj) PURE;
  693.     STDMETHOD(Close) (THIS_ DWORD dwSaveOption) PURE;
  694.     STDMETHOD(SetMoniker) (THIS_ DWORD dwWhichMoniker, LPMONIKER pmk) PURE;
  695.     STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
  696.         LPMONIKER FAR* ppmk) PURE;
  697.     STDMETHOD(InitFromData) (THIS_ LPDATAOBJECT pDataObject,
  698.         BOOL fCreation,
  699.         DWORD dwReserved) PURE;
  700.     STDMETHOD(GetClipboardData) (THIS_ DWORD dwReserved,
  701.         LPDATAOBJECT FAR* ppDataObject) PURE;
  702.     STDMETHOD(DoVerb) (THIS_ LONG iVerb,
  703.         LPMSG lpmsg,
  704.         LPOLECLIENTSITE pActiveSite,
  705.         LONG lindex,
  706.         HWND hwndParent,
  707.         LPCRECT lprcPosRect) PURE;
  708.     STDMETHOD(EnumVerbs) (THIS_ LPENUMOLEVERB FAR* ppenumOleVerb) PURE;
  709.     STDMETHOD(Update) (THIS) PURE;
  710.     STDMETHOD(IsUpToDate) (THIS) PURE;
  711.     STDMETHOD(GetUserClassID) (THIS_ CLSID FAR* pClsid) PURE;
  712.     STDMETHOD(GetUserType) (THIS_ DWORD dwFormOfType, LPSTR FAR* pszUserType) PURE;
  713.     STDMETHOD(SetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
  714.     STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
  715.  
  716.     STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
  717.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  718.     STDMETHOD(EnumAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  719.     STDMETHOD(GetMiscStatus) (THIS_ DWORD dwAspect, DWORD FAR* pdwStatus) PURE;
  720.     STDMETHOD(SetColorScheme) (THIS_ LPLOGPALETTE lpLogpal) PURE;
  721. };
  722. typedef      IOleObject FAR* LPOLEOBJECT;
  723.  
  724.  
  725.  
  726. #undef  INTERFACE
  727. #define INTERFACE   IOleClientSite
  728.  
  729. DECLARE_INTERFACE_(IOleClientSite, IUnknown)
  730. {
  731.     // *** IUnknown methods ***
  732.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  733.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  734.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  735.  
  736.     // *** IOleClientSite methods ***
  737.     STDMETHOD(SaveObject) (THIS) PURE;
  738.     STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
  739.         LPMONIKER FAR* ppmk) PURE;
  740.     STDMETHOD(GetContainer) (THIS_ LPOLECONTAINER FAR* ppContainer) PURE;
  741.     STDMETHOD(ShowObject) (THIS) PURE;
  742.     STDMETHOD(OnShowWindow) (THIS_ BOOL fShow) PURE;
  743.     STDMETHOD(RequestNewObjectLayout) (THIS) PURE;
  744. };
  745. typedef      IOleClientSite FAR* LPOLECLIENTSITE;
  746.  
  747.  
  748. /****** OLE Runnable Object Interface **********************************/
  749.  
  750. #undef  INTERFACE
  751. #define INTERFACE       IRunnableObject
  752.  
  753. DECLARE_INTERFACE_(IRunnableObject, IUnknown)
  754. {
  755.     // *** IUnknown methods ***
  756.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  757.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  758.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  759.  
  760.     // *** IRunnableObject methods ***
  761.     STDMETHOD(GetRunningClass) (THIS_ LPCLSID lpClsid) PURE;
  762.     STDMETHOD(Run) (THIS_ LPBINDCTX pbc) PURE;
  763.     STDMETHOD_(BOOL, IsRunning) (THIS) PURE;
  764.     STDMETHOD(LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE;
  765.     STDMETHOD(SetContainedObject)(THIS_ BOOL fContained) PURE;
  766. };
  767. typedef      IRunnableObject FAR* LPRUNNABLEOBJECT;
  768.  
  769.  
  770. /****** OLE Container Interfaces ***************************************/
  771.  
  772.  
  773. #undef  INTERFACE
  774. #define INTERFACE   IParseDisplayName
  775.  
  776. DECLARE_INTERFACE_(IParseDisplayName, IUnknown)
  777. {
  778.     // *** IUnknown methods ***
  779.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  780.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  781.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  782.  
  783.     // *** IParseDisplayName method ***
  784.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  785.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  786. };
  787. typedef       IParseDisplayName FAR* LPPARSEDISPLAYNAME;
  788.  
  789.  
  790. #undef  INTERFACE
  791. #define INTERFACE   IOleContainer
  792.  
  793. DECLARE_INTERFACE_(IOleContainer, IParseDisplayName)
  794. {
  795.     // *** IUnknown methods ***
  796.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  797.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  798.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  799.  
  800.     // *** IParseDisplayName method ***
  801.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  802.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  803.  
  804.     // *** IOleContainer methods ***
  805.     STDMETHOD(EnumObjects) ( DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
  806.     STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
  807. };
  808. typedef IOleContainer FAR* LPOLECONTAINER;
  809.  
  810.  
  811. typedef enum tagBINDSPEED
  812. {
  813.     BINDSPEED_INDEFINITE    = 1,
  814.     BINDSPEED_MODERATE      = 2,
  815.     BINDSPEED_IMMEDIATE     = 3
  816. } BINDSPEED;
  817.  
  818. typedef enum tagOLECONTF
  819. {
  820.     OLECONTF_EMBEDDINGS     =  1,
  821.     OLECONTF_LINKS          =  2,
  822.     OLECONTF_OTHERS         =  4,
  823.     OLECONTF_ONLYUSER       =  8,
  824.     OLECONTF_ONLYIFRUNNING  = 16
  825. } OLECONTF;
  826.  
  827.  
  828. #undef  INTERFACE
  829. #define INTERFACE   IOleItemContainer
  830.  
  831. DECLARE_INTERFACE_(IOleItemContainer, IOleContainer)
  832. {
  833.     // *** IUnknown methods ***
  834.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  835.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  836.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  837.  
  838.     // *** IParseDisplayName method ***
  839.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  840.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  841.  
  842.     // *** IOleContainer methods ***
  843.     STDMETHOD(EnumObjects) (THIS_ DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
  844.     STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
  845.  
  846.     // *** IOleItemContainer methods ***
  847.     STDMETHOD(GetObject) (THIS_ LPSTR lpszItem, DWORD dwSpeedNeeded,
  848.     LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvObject) PURE;
  849.     STDMETHOD(GetObjectStorage) (THIS_ LPSTR lpszItem, LPBINDCTX pbc,
  850.     REFIID riid, LPVOID FAR* ppvStorage) PURE;
  851.     STDMETHOD(IsRunning) (THIS_ LPSTR lpszItem) PURE;
  852. };
  853. typedef       IOleItemContainer FAR* LPOLEITEMCONTAINER;
  854.  
  855.  
  856. /****** OLE Advise Holder Interface ***************************************/
  857.  
  858.  
  859. #undef  INTERFACE
  860. #define INTERFACE   IOleAdviseHolder
  861.  
  862. DECLARE_INTERFACE_(IOleAdviseHolder, IUnknown)
  863. {
  864.     // *** IUnknown methods ***
  865.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  866.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  867.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  868.  
  869.     // *** IOleAdviseHolder methods ***
  870.     STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
  871.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  872.     STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  873.  
  874.     STDMETHOD(SendOnRename)(THIS_ LPMONIKER pmk) PURE;
  875.     STDMETHOD(SendOnSave)(THIS) PURE;
  876.     STDMETHOD(SendOnClose)(THIS) PURE;
  877. };
  878. typedef      IOleAdviseHolder FAR* LPOLEADVISEHOLDER;
  879.  
  880.  
  881. /****** OLE Link Interface ************************************************/
  882.  
  883. /* Link update options */
  884. typedef enum tagOLEUPDATE
  885. {
  886.     OLEUPDATE_ALWAYS=1,
  887.     OLEUPDATE_ONCALL=3
  888. } OLEUPDATE;
  889. typedef  OLEUPDATE FAR* LPOLEUPDATE;
  890.  
  891.  
  892. // for IOleLink::BindToSource
  893. typedef enum tagOLELINKBIND
  894. {
  895.     OLELINKBIND_EVENIFCLASSDIFF = 1,
  896. } OLELINKBIND;
  897.  
  898.  
  899. #undef  INTERFACE
  900. #define INTERFACE   IOleLink
  901.  
  902. DECLARE_INTERFACE_(IOleLink, IUnknown)
  903. {
  904.     // *** IUnknown methods ***
  905.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  906.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  907.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  908.  
  909.     // *** IOleLink methods ***
  910.     STDMETHOD(SetUpdateOptions) (THIS_ DWORD dwUpdateOpt) PURE;
  911.     STDMETHOD(GetUpdateOptions) (THIS_ LPDWORD pdwUpdateOpt) PURE;
  912.     STDMETHOD(SetSourceMoniker) (THIS_ LPMONIKER pmk, REFCLSID rclsid) PURE;
  913.     STDMETHOD(GetSourceMoniker) (THIS_ LPMONIKER FAR* ppmk) PURE;
  914.     STDMETHOD(SetSourceDisplayName) (THIS_ LPCSTR lpszDisplayName) PURE;
  915.     STDMETHOD(GetSourceDisplayName) (THIS_ LPSTR FAR* lplpszDisplayName) PURE;
  916.     STDMETHOD(BindToSource) (THIS_ DWORD bindflags, LPBINDCTX pbc) PURE;
  917.     STDMETHOD(BindIfRunning) (THIS) PURE;
  918.     STDMETHOD(GetBoundSource) (THIS_ LPUNKNOWN FAR* ppUnk) PURE;
  919.     STDMETHOD(UnbindSource) (THIS) PURE;
  920.     STDMETHOD(Update) (THIS_ LPBINDCTX pbc) PURE;
  921. };
  922. typedef         IOleLink FAR* LPOLELINK;
  923.  
  924.  
  925. /****** OLE InPlace Editing Interfaces ************************************/
  926.  
  927. #ifdef _MAC
  928. typedef Handle  HOLEMENU;
  929. typedef long    SIZE;
  930. typedef long    HACCEL;
  931. #else
  932. DECLARE_HANDLE(HOLEMENU);
  933. #endif
  934.  
  935. typedef struct FARSTRUCT tagOIFI          // OleInPlaceFrameInfo
  936. {
  937.     UINT    cb;
  938.     BOOL    fMDIApp;
  939.     HWND    hwndFrame;
  940.     HACCEL  haccel;
  941.     int     cAccelEntries;
  942. } OLEINPLACEFRAMEINFO, FAR* LPOLEINPLACEFRAMEINFO;
  943.  
  944.  
  945. typedef struct FARSTRUCT tagOleMenuGroupWidths
  946. {
  947.     LONG    width[6];
  948. } OLEMENUGROUPWIDTHS, FAR* LPOLEMENUGROUPWIDTHS;
  949.  
  950. typedef RECT    BORDERWIDTHS;
  951. typedef LPRECT  LPBORDERWIDTHS;
  952. typedef LPCRECT LPCBORDERWIDTHS;
  953.  
  954. /* Inplace editing specific error codes */
  955.  
  956. #define INPLACE_E_NOTUNDOABLE   (INPLACE_E_FIRST)
  957. // undo is not avaiable
  958.  
  959. #define INPLACE_E_NOTOOLSPACE       (INPLACE_E_FIRST+1)
  960. // Space for tools is not available
  961.  
  962. #define INPLACE_S_TRUNCATED     (INPLACE_S_FIRST)
  963. // Message is too long, some of it had to be truncated before displaying
  964.  
  965. //misc definitions
  966. #define INPLACE_DEFBORDERWIDTH  4
  967.  
  968. //      forward type declarations
  969. #if defined(__cplusplus)
  970. interface IOleInPlaceUIWindow;
  971. #else
  972. typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
  973. #endif
  974.  
  975. typedef     IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
  976.  
  977.  
  978. #undef  INTERFACE
  979. #define INTERFACE   IOleWindow
  980.  
  981. DECLARE_INTERFACE_(IOleWindow, IUnknown)
  982. {
  983.     // *** IUnknown methods ***
  984.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  985.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  986.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  987.  
  988.     // *** IOleWindow methods ***
  989.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  990.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  991. };
  992.  
  993. typedef         IOleWindow FAR* LPOLEWINDOW;
  994.  
  995.  
  996.  
  997. #undef  INTERFACE
  998. #define INTERFACE   IOleInPlaceObject
  999.  
  1000. DECLARE_INTERFACE_(IOleInPlaceObject, IOleWindow)
  1001. {
  1002.     // *** IUnknown methods ***
  1003.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1004.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1005.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1006.  
  1007.     // *** IOleWindow methods ***
  1008.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1009.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1010.  
  1011.     // *** IOleInPlaceObject methods ***
  1012.     STDMETHOD(InPlaceDeactivate) (THIS) PURE;
  1013.     STDMETHOD(UIDeactivate) (THIS) PURE;
  1014.     STDMETHOD(SetObjectRects) (THIS_ LPCRECT lprcPosRect,
  1015.             LPCRECT lprcClipRect) PURE;
  1016.     STDMETHOD(ReactivateAndUndo) (THIS) PURE;
  1017. };
  1018. typedef         IOleInPlaceObject FAR* LPOLEINPLACEOBJECT;
  1019.  
  1020.  
  1021.  
  1022. #undef  INTERFACE
  1023. #define INTERFACE   IOleInPlaceActiveObject
  1024.  
  1025. DECLARE_INTERFACE_(IOleInPlaceActiveObject, IOleWindow)
  1026. {
  1027.    // *** IUnknown methods ***
  1028.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1029.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1030.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1031.  
  1032.     // *** IOleWindow methods ***
  1033.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1034.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1035.  
  1036.     // *** IOleInPlaceActiveObject methods ***
  1037.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE;
  1038.     STDMETHOD(OnFrameWindowActivate) (THIS_ BOOL fActivate) PURE;
  1039.     STDMETHOD(OnDocWindowActivate) (THIS_ BOOL fActivate) PURE;
  1040.     STDMETHOD(ResizeBorder) (THIS_ LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow) PURE;
  1041.     STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
  1042. };
  1043. typedef         IOleInPlaceActiveObject FAR* LPOLEINPLACEACTIVEOBJECT;
  1044.  
  1045.  
  1046.  
  1047. #undef  INTERFACE
  1048. #define INTERFACE   IOleInPlaceUIWindow
  1049.  
  1050. DECLARE_INTERFACE_(IOleInPlaceUIWindow, IOleWindow)
  1051. {
  1052.    // *** IUnknown methods ***
  1053.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1054.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1055.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1056.  
  1057.     // *** IOleWindow methods ***
  1058.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1059.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1060.  
  1061.     // *** IOleInPlaceUIWindow methods ***
  1062.     STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
  1063.     STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1064.     STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1065.     STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
  1066.             LPCSTR lpszObjName) PURE;
  1067. };
  1068. typedef     IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
  1069.  
  1070.  
  1071.  
  1072. #undef  INTERFACE
  1073. #define INTERFACE   IOleInPlaceFrame
  1074.  
  1075. DECLARE_INTERFACE_(IOleInPlaceFrame, IOleInPlaceUIWindow)
  1076. {
  1077.    // *** IUnknown methods ***
  1078.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1079.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1080.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1081.  
  1082.     // *** IOleWindow methods ***
  1083.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1084.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1085.  
  1086.     // *** IOleInPlaceUIWindow methods ***
  1087.     STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
  1088.     STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1089.     STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1090.     STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
  1091.             LPCSTR lpszObjName) PURE;
  1092.  
  1093.  
  1094.     // *** IOleInPlaceFrame methods ***
  1095.     STDMETHOD(InsertMenus) (THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE;
  1096.     STDMETHOD(SetMenu) (THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE;
  1097.     STDMETHOD(RemoveMenus) (THIS_ HMENU hmenuShared) PURE;
  1098.     STDMETHOD(SetStatusText) (THIS_ LPCSTR lpszStatusText) PURE;
  1099.     STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
  1100.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg, WORD wID) PURE;
  1101. };
  1102. typedef     IOleInPlaceFrame FAR* LPOLEINPLACEFRAME;
  1103.  
  1104.  
  1105. #undef  INTERFACE
  1106. #define INTERFACE   IOleInPlaceSite
  1107.  
  1108. DECLARE_INTERFACE_(IOleInPlaceSite, IOleWindow)
  1109. {
  1110.    // *** IUnknown methods ***
  1111.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1112.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1113.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1114.  
  1115.     // *** IOleWindow methods ***
  1116.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1117.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1118.  
  1119.     // *** IOleInPlaceSite methods ***
  1120.     STDMETHOD(CanInPlaceActivate) (THIS) PURE;
  1121.     STDMETHOD(OnInPlaceActivate) (THIS) PURE;
  1122.     STDMETHOD(OnUIActivate) (THIS) PURE;
  1123.     STDMETHOD(GetWindowContext) (THIS_ LPOLEINPLACEFRAME FAR* lplpFrame,
  1124.             LPOLEINPLACEUIWINDOW FAR* lplpDoc,
  1125.             LPRECT lprcPosRect,
  1126.             LPRECT lprcClipRect,
  1127.             LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
  1128.     STDMETHOD(Scroll) (THIS_ SIZE scrollExtent) PURE;
  1129.     STDMETHOD(OnUIDeactivate) (THIS_ BOOL fUndoable) PURE;
  1130.     STDMETHOD(OnInPlaceDeactivate) (THIS) PURE;
  1131.     STDMETHOD(DiscardUndoState) (THIS) PURE;
  1132.     STDMETHOD(DeactivateAndUndo) (THIS) PURE;
  1133.     STDMETHOD(OnPosRectChange) (THIS_ LPCRECT lprcPosRect) PURE;
  1134. };
  1135. typedef         IOleInPlaceSite FAR* LPOLEINPLACESITE;
  1136.  
  1137.  
  1138.  
  1139. /****** OLE API Prototypes ************************************************/
  1140.  
  1141. STDAPI_(DWORD) OleBuildVersion( VOID );
  1142.  
  1143. /* helper functions */
  1144. STDAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
  1145. STDAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
  1146. STDAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
  1147. STDAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
  1148. STDAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPSTR lpszUserType);
  1149. STDAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPSTR FAR* lplpszUserType);
  1150.  
  1151.  
  1152. /* init/term */
  1153.  
  1154. STDAPI OleInitialize(LPMALLOC pMalloc);
  1155. STDAPI_(void) OleUninitialize(void);
  1156.  
  1157.  
  1158. /* APIs to query whether (Embedded/Linked) object can be created from
  1159.    the data object */
  1160.  
  1161. STDAPI  OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
  1162. STDAPI  OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
  1163.         
  1164.  
  1165. /* Object creation APIs */
  1166.  
  1167. STDAPI  OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
  1168.         LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
  1169.         LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1170.  
  1171. STDAPI  OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1172.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1173.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1174.         LPVOID FAR* ppvObj);
  1175.  
  1176. STDAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1177.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1178.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1179.         LPVOID FAR* ppvObj);
  1180.  
  1181. STDAPI  OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
  1182.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1183.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1184.         LPVOID FAR* ppvObj);
  1185.  
  1186.         
  1187. STDAPI  OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
  1188.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1189.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1190.  
  1191. STDAPI  OleCreateLinkToFile(LPCSTR lpszFileName, REFIID riid,
  1192.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1193.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1194.     
  1195. STDAPI  OleCreateFromFile(REFCLSID rclsid, LPCSTR lpszFileName, REFIID riid,
  1196.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1197.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1198.  
  1199. STDAPI  OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
  1200.         LPVOID FAR* ppvObj);
  1201.     
  1202. STDAPI  OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
  1203.  
  1204. STDAPI  OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
  1205. STDAPI  OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
  1206.  
  1207.  
  1208. STDAPI  OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
  1209. STDAPI  OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
  1210.  
  1211.  
  1212. /* Drag/Drop APIs */
  1213.  
  1214. STDAPI  RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
  1215. STDAPI  RevokeDragDrop(HWND hwnd);
  1216. STDAPI  DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
  1217.         DWORD dwOKEffects, LPDWORD pdwEffect);
  1218.  
  1219. /* Clipboard APIs */
  1220.  
  1221. STDAPI  OleSetClipboard(LPDATAOBJECT pDataObj);
  1222. STDAPI  OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
  1223. STDAPI  OleFlushClipboard(void);
  1224. STDAPI  OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
  1225.  
  1226.  
  1227. /* InPlace Editing APIs */
  1228.  
  1229. STDAPI_(HOLEMENU)   OleCreateMenuDescriptor (HMENU hmenuCombined,
  1230.                 LPOLEMENUGROUPWIDTHS lpMenuWidths);
  1231. STDAPI              OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
  1232.                 HWND hwndActiveObject,
  1233.                 LPOLEINPLACEFRAME lpFrame,
  1234.                 LPOLEINPLACEACTIVEOBJECT lpActiveObj);
  1235. STDAPI              OleDestroyMenuDescriptor (HOLEMENU holemenu);
  1236.  
  1237. STDAPI              OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
  1238.                 LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
  1239.                 
  1240.                 
  1241. /* Helper APIs */
  1242. STDAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
  1243.             UINT uiFlags);
  1244.  
  1245. STDAPI          OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
  1246.             LPCRECT lprcBounds);
  1247.             
  1248. STDAPI          OleRun(LPUNKNOWN pUnknown);
  1249. STDAPI_(BOOL)   OleIsRunning(LPOLEOBJECT pObject);
  1250. STDAPI          OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
  1251.  
  1252. STDAPI_(void)   ReleaseStgMedium(LPSTGMEDIUM);
  1253. STDAPI          CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
  1254.  
  1255. STDAPI          OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1256.             REFIID riid, LPVOID FAR* lplpObj);
  1257.  
  1258. STDAPI          OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1259.             DWORD flags, LPCLASSFACTORY pCF,
  1260.                     REFIID riid, LPVOID FAR* lplpObj);
  1261.                     
  1262. STDAPI_(BOOL)   IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
  1263.                     WORD FAR* lpwCmd);
  1264.  
  1265.                     
  1266. /* Icon extraction Helper APIs */
  1267.                     
  1268. STDAPI_(HGLOBAL) OleGetIconOfFile(LPSTR lpszPath, BOOL fUseFileAsLabel);
  1269.  
  1270. STDAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid,     LPSTR lpszLabel,
  1271.                     BOOL fUseTypeAsLabel);
  1272.  
  1273. STDAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPSTR lpszLabel,
  1274.                     LPSTR lpszSourceFile, UINT iIconIndex);
  1275.  
  1276.  
  1277.                     
  1278. /* Registration Database Helper APIs */
  1279.  
  1280. STDAPI                  OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
  1281.                     LPSTR FAR* pszUserType);
  1282.  
  1283. STDAPI                  OleRegGetMiscStatus     (REFCLSID clsid, DWORD dwAspect,
  1284.                     DWORD FAR* pdwStatus);
  1285.  
  1286. STDAPI                  OleRegEnumFormatEtc     (REFCLSID clsid, DWORD dwDirection,
  1287.                     LPENUMFORMATETC FAR* ppenum);
  1288.  
  1289. STDAPI                  OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
  1290.  
  1291.  
  1292.  
  1293. /* OLE 1.0 conversion APIS */
  1294.  
  1295. STDAPI OleConvertIStorageToOLESTREAM
  1296.     (LPSTORAGE                  pstg,
  1297.      LPOLESTREAM            polestm);
  1298.  
  1299. STDAPI OleConvertOLESTREAMToIStorage
  1300.     (LPOLESTREAM                polestm,
  1301.      LPSTORAGE                  pstg,
  1302.      const DVTARGETDEVICE FAR*  ptd);
  1303.  
  1304. STDAPI OleConvertIStorageToOLESTREAMEx
  1305.     (LPSTORAGE                  pstg,
  1306.                                     // Presentation data to OLESTREAM
  1307.      CLIPFORMAT                     cfFormat,       //              format
  1308.      LONG                           lWidth,         //              width
  1309.      LONG                           lHeight,        //              height
  1310.      DWORD                          dwSize,         //              size in bytes
  1311.      LPSTGMEDIUM                pmedium,        //              bits
  1312.      LPOLESTREAM            polestm);
  1313.  
  1314. STDAPI OleConvertOLESTREAMToIStorageEx
  1315.     (LPOLESTREAM                polestm,
  1316.      LPSTORAGE                      pstg,
  1317.                                     // Presentation data from OLESTREAM
  1318.      CLIPFORMAT FAR*        pcfFormat,      //              format
  1319.      LONG FAR*                      plwWidth,       //              width
  1320.      LONG FAR*                      plHeight,       //              height
  1321.      DWORD FAR*                     pdwSize,        //              size in bytes
  1322.      LPSTGMEDIUM            pmedium);       //              bits
  1323.  
  1324.  
  1325.  
  1326. /* Storage Utility APIs */
  1327. STDAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
  1328. STDAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1329.                     LPLOCKBYTES FAR* pplkbyt);
  1330.  
  1331. STDAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
  1332. STDAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1333.                 LPSTREAM FAR* ppstm);
  1334.  
  1335.  
  1336. /* ConvertTo APIS */
  1337.  
  1338. STDAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
  1339. STDAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
  1340. STDAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
  1341. STDAPI GetConvertStg(LPSTORAGE pStg);
  1342. STDAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
  1343.  
  1344.  
  1345. #endif // _OLE2_H_
  1346.  
  1347.  
  1348. #else  /* !__FLAT__ */
  1349. //+---------------------------------------------------------------------------
  1350. //
  1351. //  Microsoft Windows
  1352. //  Copyright (C) Microsoft Corporation, 1992 - 1995.
  1353. //
  1354. //  File:       OLE2.h
  1355. //  Contents:   Main OLE2 header; Defines Linking and Emmebbeding interfaces, and API's.
  1356. //              Also includes .h files for the compobj, and oleauto  subcomponents.
  1357. //
  1358. //----------------------------------------------------------------------------
  1359. #if !defined( _OLE2_H_ )
  1360. #define _OLE2_H_
  1361.  
  1362. // Set packing to 8
  1363. #include <pshpack8.h>
  1364.  
  1365. // Make 100% sure WIN32 is defined
  1366. #ifndef WIN32
  1367. #define WIN32    100  // 100 == NT version 1.0
  1368. #endif
  1369.  
  1370.  
  1371. // SET to remove _export from interface definitions
  1372.  
  1373.  
  1374. #include <winerror.h>
  1375.  
  1376. #include <objbase.h>
  1377. #include <oleauto.h>
  1378.  
  1379. // View OBJECT Error Codes
  1380.  
  1381. #define E_DRAW                  VIEW_E_DRAW
  1382.  
  1383. // IDataObject Error Codes
  1384. #define DATA_E_FORMATETC        DV_E_FORMATETC
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. // Common stuff gleamed from OLE.2,
  1391.  
  1392. /* verbs */
  1393. #define OLEIVERB_PRIMARY            (0L)
  1394. #define OLEIVERB_SHOW               (-1L)
  1395. #define OLEIVERB_OPEN               (-2L)
  1396. #define OLEIVERB_HIDE               (-3L)
  1397. #define OLEIVERB_UIACTIVATE         (-4L)
  1398. #define OLEIVERB_INPLACEACTIVATE    (-5L)
  1399. #define OLEIVERB_DISCARDUNDOSTATE   (-6L)
  1400.  
  1401. // for OleCreateEmbeddingHelper flags; roles in low word; options in high word
  1402. #define EMBDHLP_INPROC_HANDLER   0x0000L
  1403. #define EMBDHLP_INPROC_SERVER    0x0001L
  1404. #define EMBDHLP_CREATENOW    0x00000000L
  1405. #define EMBDHLP_DELAYCREATE  0x00010000L
  1406.  
  1407. /* pull in the MIDL generated header */
  1408.  
  1409. #include <oleidl.h>
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416. /****** DV APIs ***********************************************************/
  1417.  
  1418.  
  1419. WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
  1420.  
  1421.  
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427. /****** OLE API Prototypes ************************************************/
  1428.  
  1429. WINOLEAPI_(DWORD) OleBuildVersion( VOID );
  1430.  
  1431. /* helper functions */
  1432. WINOLEAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
  1433. WINOLEAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
  1434. WINOLEAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
  1435. WINOLEAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
  1436. WINOLEAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
  1437. WINOLEAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType);
  1438.  
  1439.  
  1440. /* init/term */
  1441.  
  1442. WINOLEAPI OleInitialize(LPVOID pvReserved);
  1443. WINOLEAPI_(void) OleUninitialize(void);
  1444.  
  1445.  
  1446. /* APIs to query whether (Embedded/Linked) object can be created from
  1447.    the data object */
  1448.  
  1449. WINOLEAPI  OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
  1450. WINOLEAPI  OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
  1451.  
  1452.  
  1453. /* Object creation APIs */
  1454.  
  1455. WINOLEAPI  OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
  1456.                 LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
  1457.                 LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1458.  
  1459. WINOLEAPI  OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1460.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  1461.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1462.                 LPVOID FAR* ppvObj);
  1463.  
  1464. WINOLEAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1465.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  1466.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1467.                 LPVOID FAR* ppvObj);
  1468.  
  1469. WINOLEAPI  OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
  1470.                 DWORD renderopt, LPFORMATETC pFormatEtc,
  1471.                 LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1472.                 LPVOID FAR* ppvObj);
  1473.  
  1474.  
  1475. WINOLEAPI  OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
  1476.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  1477.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1478.  
  1479. WINOLEAPI  OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
  1480.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  1481.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1482.  
  1483. WINOLEAPI  OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
  1484.             DWORD renderopt, LPFORMATETC lpFormatEtc,
  1485.             LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1486.  
  1487. WINOLEAPI  OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
  1488.             LPVOID FAR* ppvObj);
  1489.  
  1490. WINOLEAPI  OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
  1491.  
  1492. WINOLEAPI  OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
  1493. WINOLEAPI  OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
  1494.  
  1495.  
  1496. WINOLEAPI  OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
  1497. WINOLEAPI  OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
  1498.  
  1499.  
  1500. /* Drag/Drop APIs */
  1501.  
  1502. WINOLEAPI  RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
  1503. WINOLEAPI  RevokeDragDrop(HWND hwnd);
  1504. WINOLEAPI  DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
  1505.             DWORD dwOKEffects, LPDWORD pdwEffect);
  1506.  
  1507. /* Clipboard APIs */
  1508.  
  1509. WINOLEAPI  OleSetClipboard(LPDATAOBJECT pDataObj);
  1510. WINOLEAPI  OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
  1511. WINOLEAPI  OleFlushClipboard(void);
  1512. WINOLEAPI  OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
  1513.  
  1514.  
  1515. /* InPlace Editing APIs */
  1516.  
  1517. WINOLEAPI_(HOLEMENU)   OleCreateMenuDescriptor (HMENU hmenuCombined,
  1518.                                 LPOLEMENUGROUPWIDTHS lpMenuWidths);
  1519. WINOLEAPI              OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
  1520.                                 HWND hwndActiveObject,
  1521.                                 LPOLEINPLACEFRAME lpFrame,
  1522.                                 LPOLEINPLACEACTIVEOBJECT lpActiveObj);
  1523. WINOLEAPI              OleDestroyMenuDescriptor (HOLEMENU holemenu);
  1524.  
  1525. WINOLEAPI              OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
  1526.                             LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
  1527.  
  1528.  
  1529. /* Helper APIs */
  1530. WINOLEAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
  1531.                         UINT uiFlags);
  1532.  
  1533. WINOLEAPI          OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
  1534.                     LPCRECT lprcBounds);
  1535.  
  1536. WINOLEAPI          OleRun(LPUNKNOWN pUnknown);
  1537. WINOLEAPI_(BOOL)   OleIsRunning(LPOLEOBJECT pObject);
  1538. WINOLEAPI          OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
  1539. WINOLEAPI_(void)   ReleaseStgMedium(LPSTGMEDIUM);
  1540. WINOLEAPI          CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
  1541.  
  1542. WINOLEAPI          OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1543.                     REFIID riid, LPVOID FAR* lplpObj);
  1544.  
  1545. WINOLEAPI          OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1546.                     DWORD flags, LPCLASSFACTORY pCF,
  1547.                                         REFIID riid, LPVOID FAR* lplpObj);
  1548.  
  1549. WINOLEAPI_(BOOL)   IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
  1550.                                         WORD FAR* lpwCmd);
  1551. /* Icon extraction Helper APIs */
  1552.  
  1553. WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
  1554.  
  1555. WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid,     LPOLESTR lpszLabel,
  1556.                                         BOOL fUseTypeAsLabel);
  1557.  
  1558. WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel,
  1559.                                         LPOLESTR lpszSourceFile, UINT iIconIndex);
  1560.  
  1561.  
  1562.  
  1563. /* Registration Database Helper APIs */
  1564.  
  1565. WINOLEAPI                  OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
  1566.                                         LPOLESTR FAR* pszUserType);
  1567.  
  1568. WINOLEAPI                  OleRegGetMiscStatus     (REFCLSID clsid, DWORD dwAspect,
  1569.                                         DWORD FAR* pdwStatus);
  1570.  
  1571. WINOLEAPI                  OleRegEnumFormatEtc     (REFCLSID clsid, DWORD dwDirection,
  1572.                                         LPENUMFORMATETC FAR* ppenum);
  1573.  
  1574. WINOLEAPI                  OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580. /* OLE 1.0 conversion APIS */
  1581.  
  1582. /***** OLE 1.0 OLESTREAM declarations *************************************/
  1583.  
  1584. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  1585.  
  1586. typedef struct _OLESTREAMVTBL
  1587. {
  1588.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  1589.     DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
  1590. } OLESTREAMVTBL;
  1591. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  1592.  
  1593. typedef struct _OLESTREAM
  1594. {
  1595.     LPOLESTREAMVTBL lpstbl;
  1596. } OLESTREAM;
  1597.  
  1598.  
  1599. WINOLEAPI OleConvertOLESTREAMToIStorage
  1600.     (LPOLESTREAM                lpolestream,
  1601.     LPSTORAGE                   pstg,
  1602.     const DVTARGETDEVICE FAR*   ptd);
  1603.  
  1604. WINOLEAPI OleConvertIStorageToOLESTREAM
  1605.     (LPSTORAGE      pstg,
  1606.     LPOLESTREAM     lpolestream);
  1607.  
  1608.  
  1609. /* Storage Utility APIs */
  1610. WINOLEAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
  1611. WINOLEAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1612.                                     LPLOCKBYTES FAR* pplkbyt);
  1613.  
  1614. WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
  1615. WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1616.                                 LPSTREAM FAR* ppstm);
  1617.  
  1618.  
  1619. /* ConvertTo APIS */
  1620.  
  1621. WINOLEAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
  1622. WINOLEAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
  1623. WINOLEAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
  1624. WINOLEAPI GetConvertStg(LPSTORAGE pStg);
  1625. WINOLEAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
  1626.  
  1627.  
  1628. WINOLEAPI OleConvertIStorageToOLESTREAMEx
  1629.     (LPSTORAGE          pstg,
  1630.                                     // Presentation data to OLESTREAM
  1631.      CLIPFORMAT         cfFormat,   //      format
  1632.      LONG               lWidth,     //      width
  1633.      LONG               lHeight,    //      height
  1634.      DWORD              dwSize,     //      size in bytes
  1635.      LPSTGMEDIUM        pmedium,    //      bits
  1636.      LPOLESTREAM        polestm);
  1637.  
  1638. WINOLEAPI OleConvertOLESTREAMToIStorageEx
  1639.     (LPOLESTREAM        polestm,
  1640.      LPSTORAGE          pstg,
  1641.                                     // Presentation data from OLESTREAM
  1642.      CLIPFORMAT FAR*    pcfFormat,  //      format
  1643.      LONG FAR*          plwWidth,   //      width
  1644.      LONG FAR*          plHeight,   //      height
  1645.      DWORD FAR*         pdwSize,    //      size in bytes
  1646.      LPSTGMEDIUM        pmedium);   //      bits
  1647.  
  1648. #ifndef RC_INVOKED
  1649. #include <poppack.h>
  1650. #endif // RC_INVOKED
  1651.  
  1652. #endif     // __OLE2_H__
  1653.  
  1654.  
  1655.  
  1656. #endif  /* __FLAT__ */
  1657.