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

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * ole.h -       Object Linking and Embedding functions, types, and definitions*
  4. *                                                                             *
  5. *               Version 1.0                                                   *
  6. *                                                                             *
  7. #pragma option -b.
  8. *               NOTE: windows.h must be #included first                       *
  9. #pragma option -b
  10. *                                                                             *
  11. *               Copyright (c) 1990-1996, Microsoft Corp.  All rights reserved.*
  12. *                                                                             *
  13. \*****************************************************************************/
  14.  
  15. #ifndef _INC_OLE
  16. #define _INC_OLE
  17. #pragma option -b
  18.  
  19. #ifdef WIN16
  20. #pragma option -b.
  21. #include <pshpack1.h>   /* Assume byte packing throughout */
  22. #pragma option -b
  23. #endif
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {            /* Assume C declarations for C++ */
  27. #endif  /* __cplusplus */
  28.  
  29. #ifndef WINAPI          /* If not included with 3.1 headers... */
  30. #define WINAPI      FAR PASCAL
  31. #define CALLBACK    FAR PASCAL
  32. #define LPCSTR      LPSTR
  33. #define LRESULT     LONG
  34. #define HGLOBAL     HANDLE
  35. #endif  /* _INC_WINDOWS */
  36.  
  37.  
  38. #ifdef STRICT
  39. #define OLE_LPCSTR  LPCSTR
  40. #define OLE_CONST   const
  41. #else   /* STRICT */
  42. #define OLE_LPCSTR  LPSTR
  43. #define OLE_CONST
  44. #endif /* !STRICT */
  45.  
  46. #define LRESULT     LONG
  47. #define HGLOBAL     HANDLE
  48.  
  49.  
  50. /* Object types */
  51. #define OT_LINK             1L
  52. #define OT_EMBEDDED         2L
  53. #define OT_STATIC           3L
  54.  
  55. /* activate verbs */
  56. #define OLEVERB_PRIMARY     0
  57.  
  58. /* target device info structure */
  59. typedef struct _OLETARGETDEVICE
  60. {
  61.     USHORT otdDeviceNameOffset;
  62.     USHORT otdDriverNameOffset;
  63.     USHORT otdPortNameOffset;
  64.     USHORT otdExtDevmodeOffset;
  65.     USHORT otdExtDevmodeSize;
  66.     USHORT otdEnvironmentOffset;
  67.     USHORT otdEnvironmentSize;
  68.     BYTE otdData[1];
  69. } OLETARGETDEVICE;
  70. typedef OLETARGETDEVICE FAR* LPOLETARGETDEVICE;
  71.  
  72. /* flags used in some methods */
  73. #define OF_SET              0x0001
  74. #define OF_GET              0x0002
  75. #define OF_HANDLER          0x0004
  76.  
  77. /* return codes for OLE functions */
  78. typedef enum
  79. {
  80.     OLE_OK,                     /* 0   Function operated correctly             */
  81.  
  82.     OLE_WAIT_FOR_RELEASE,       /* 1   Command has been initiated, client      */
  83.                                 /*     must wait for release. keep dispatching */
  84.                                 /*     messages till OLE_RELESE in callback    */
  85.  
  86.     OLE_BUSY,                   /* 2   Tried to execute a method while another */
  87.                                 /*     method is in progress.                  */
  88.  
  89.     OLE_ERROR_PROTECT_ONLY,     /* 3   Ole APIs are called in real mode        */
  90.     OLE_ERROR_MEMORY,           /* 4   Could not alloc or lock memory          */
  91.     OLE_ERROR_STREAM,           /* 5  (OLESTREAM) stream error                 */
  92.     OLE_ERROR_STATIC,           /* 6   Non static object expected              */
  93.     OLE_ERROR_BLANK,            /* 7   Critical data missing                   */
  94.     OLE_ERROR_DRAW,             /* 8   Error while drawing                     */
  95.     OLE_ERROR_METAFILE,         /* 9   Invalid metafile                        */
  96.     OLE_ERROR_ABORT,            /* 10  Client chose to abort metafile drawing  */
  97.     OLE_ERROR_CLIPBOARD,        /* 11  Failed to get/set clipboard data        */
  98.     OLE_ERROR_FORMAT,           /* 12  Requested format is not available       */
  99.     OLE_ERROR_OBJECT,           /* 13  Not a valid object                      */
  100.     OLE_ERROR_OPTION,           /* 14  Invalid option(link update / render)    */
  101.     OLE_ERROR_PROTOCOL,         /* 15  Invalid protocol                        */
  102.     OLE_ERROR_ADDRESS,          /* 16  One of the pointers is invalid          */
  103.     OLE_ERROR_NOT_EQUAL,        /* 17  Objects are not equal                   */
  104.     OLE_ERROR_HANDLE,           /* 18  Invalid handle encountered              */
  105.     OLE_ERROR_GENERIC,          /* 19  Some general error                      */
  106.     OLE_ERROR_CLASS,            /* 20  Invalid class                           */
  107.     OLE_ERROR_SYNTAX,           /* 21  Command syntax is invalid               */
  108.     OLE_ERROR_DATATYPE,         /* 22  Data format is not supported            */
  109.     OLE_ERROR_PALETTE,          /* 23  Invalid color palette                   */
  110.     OLE_ERROR_NOT_LINK,         /* 24  Not a linked object                     */
  111.     OLE_ERROR_NOT_EMPTY,        /* 25  Client doc contains objects.            */
  112.     OLE_ERROR_SIZE,             /* 26  Incorrect buffer size passed to the api */
  113.                                 /*     that places some string in caller's     */
  114.                                 /*     buffer                                  */
  115.  
  116.     OLE_ERROR_DRIVE,            /* 27  Drive letter in doc name is invalid     */
  117.     OLE_ERROR_NETWORK,          /* 28  Failed to establish connection to a     */
  118.                                 /*     network share on which the document     */
  119.                                 /*     is located                              */
  120.  
  121.     OLE_ERROR_NAME,             /* 29  Invalid name(doc name, object name),    */
  122.                                 /*     etc.. passed to the APIs                */
  123.  
  124.     OLE_ERROR_TEMPLATE,         /* 30  Server failed to load template          */
  125.     OLE_ERROR_NEW,              /* 31  Server failed to create new doc         */
  126.     OLE_ERROR_EDIT,             /* 32  Server failed to create embedded        */
  127.                                 /*     instance                                */
  128.     OLE_ERROR_OPEN,             /* 33  Server failed to open document,         */
  129.                                 /*     possible invalid link                   */
  130.  
  131.     OLE_ERROR_NOT_OPEN,         /* 34  Object is not open for editing          */
  132.     OLE_ERROR_LAUNCH,           /* 35  Failed to launch server                 */
  133.     OLE_ERROR_COMM,             /* 36  Failed to communicate with server       */
  134.     OLE_ERROR_TERMINATE,        /* 37  Error in termination                    */
  135.     OLE_ERROR_COMMAND,          /* 38  Error in execute                        */
  136.     OLE_ERROR_SHOW,             /* 39  Error in show                           */
  137.     OLE_ERROR_DOVERB,           /* 40  Error in sending do verb, or invalid    */
  138.                                 /*     verb                                    */
  139.     OLE_ERROR_ADVISE_NATIVE,    /* 41  Item could be missing                   */
  140.     OLE_ERROR_ADVISE_PICT,      /* 42  Item could be missing or server doesn't */
  141.                                 /*     this format.                            */
  142.  
  143.     OLE_ERROR_ADVISE_RENAME,    /* 43  Server doesn't support rename           */
  144.     OLE_ERROR_POKE_NATIVE,      /* 44  Failure of poking native data to server */
  145.     OLE_ERROR_REQUEST_NATIVE,   /* 45  Server failed to render native data     */
  146.     OLE_ERROR_REQUEST_PICT,     /* 46  Server failed to render presentation    */
  147.                                 /*     data                                    */
  148.     OLE_ERROR_SERVER_BLOCKED,   /* 47  Trying to block a blocked server or     */
  149.                                 /*     trying to revoke a blocked server       */
  150.                                 /*     or document                             */
  151.  
  152.     OLE_ERROR_REGISTRATION,     /* 48  Server is not registered in regestation */
  153.                                 /*     data base                               */
  154.     OLE_ERROR_ALREADY_REGISTERED,/*49  Trying to register same doc multiple    */
  155.                                  /*    times                                   */
  156.     OLE_ERROR_TASK,             /* 50  Server or client task is invalid        */
  157.     OLE_ERROR_OUTOFDATE,        /* 51  Object is out of date                   */
  158.     OLE_ERROR_CANT_UPDATE_CLIENT,/* 52 Embed doc's client doesn't accept       */
  159.                                 /*     updates                                 */
  160.     OLE_ERROR_UPDATE,           /* 53  erorr while trying to update            */
  161.     OLE_ERROR_SETDATA_FORMAT,   /* 54  Server app doesn't understand the       */
  162.                                 /*     format given to its SetData method      */
  163.     OLE_ERROR_STATIC_FROM_OTHER_OS,/* 55 trying to load a static object created */
  164.                                    /*    on another Operating System           */
  165.     OLE_ERROR_FILE_VER,
  166.  
  167.     /*  Following are warnings */
  168.     OLE_WARN_DELETE_DATA = 1000 /*     Caller must delete the data when he is  */
  169.                                 /*     done with it.                           */
  170. } OLESTATUS;
  171.  
  172.  
  173.  
  174. /* Codes for CallBack events */
  175. typedef enum
  176. {
  177.     OLE_CHANGED,            /* 0                                             */
  178.     OLE_SAVED,              /* 1                                             */
  179.     OLE_CLOSED,             /* 2                                             */
  180.     OLE_RENAMED,            /* 3                                             */
  181.     OLE_QUERY_PAINT,        /* 4  Interruptible paint support                */
  182.     OLE_RELEASE,            /* 5  Object is released(asynchronous operation  */
  183.                             /*    is completed)                              */
  184.     OLE_QUERY_RETRY        /* 6  Query for retry when server sends busy ACK */
  185. } OLE_NOTIFICATION;
  186.  
  187. typedef enum
  188. {
  189.     OLE_NONE,               /* 0  no method active                           */
  190.     OLE_DELETE,             /* 1  object delete                              */
  191.     OLE_LNKPASTE,           /* 2  PasteLink(auto reconnect)                  */
  192.     OLE_EMBPASTE,           /* 3  paste(and update)                          */
  193.     OLE_SHOW,               /* 4  Show                                       */
  194.     OLE_RUN,                /* 5  Run                                        */
  195.     OLE_ACTIVATE,           /* 6  Activate                                   */
  196.     OLE_UPDATE,             /* 7  Update                                     */
  197.     OLE_CLOSE,              /* 8  Close                                      */
  198.     OLE_RECONNECT,          /* 9  Reconnect                                  */
  199.     OLE_SETUPDATEOPTIONS,   /* 10 setting update options                     */
  200.     OLE_SERVERUNLAUNCH,     /* 11 server is being unlaunched                 */
  201.     OLE_LOADFROMSTREAM,     /* 12 LoadFromStream(auto reconnect)             */
  202.     OLE_SETDATA,            /* 13 OleSetData                                 */
  203.     OLE_REQUESTDATA,        /* 14 OleRequestData                             */
  204.     OLE_OTHER,              /* 15 other misc async operations                */
  205.     OLE_CREATE,             /* 16 create                                     */
  206.     OLE_CREATEFROMTEMPLATE, /* 17 CreatefromTemplate                         */
  207.     OLE_CREATELINKFROMFILE, /* 18 CreateLinkFromFile                         */
  208.     OLE_COPYFROMLNK,        /* 19 CopyFromLink(auto reconnect)               */
  209.     OLE_CREATEFROMFILE,     /* 20 CreateFromFile                             */
  210.     OLE_CREATEINVISIBLE     /* 21 CreateInvisible                            */
  211. } OLE_RELEASE_METHOD;
  212.  
  213. /* rendering options */
  214. typedef enum
  215. {
  216.     olerender_none,
  217.     olerender_draw,
  218.     olerender_format
  219. } OLEOPT_RENDER;
  220.  
  221. /* standard clipboard format type */
  222. typedef WORD OLECLIPFORMAT;
  223.  
  224. /* Link update options */
  225. typedef enum
  226. {
  227.     oleupdate_always,
  228.     oleupdate_onsave,
  229. #ifdef OLE_INTERNAL
  230.     oleupdate_oncall,
  231.     oleupdate_onclose
  232. #else
  233.     oleupdate_oncall
  234. #endif  /* OLE_INTERNAL */
  235. } OLEOPT_UPDATE;
  236.  
  237. typedef HANDLE  HOBJECT;
  238. typedef LONG    LHSERVER;
  239. typedef LONG    LHCLIENTDOC;
  240. typedef LONG    LHSERVERDOC;
  241.  
  242. typedef struct _OLEOBJECT FAR*  LPOLEOBJECT;
  243. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  244. typedef struct _OLECLIENT FAR*  LPOLECLIENT;
  245.  
  246.  
  247. /* object method table definitions. */
  248. typedef struct _OLEOBJECTVTBL
  249. {
  250.     void FAR*      (CALLBACK* QueryProtocol)        (LPOLEOBJECT, OLE_LPCSTR);
  251.     OLESTATUS      (CALLBACK* Release)              (LPOLEOBJECT);
  252.     OLESTATUS      (CALLBACK* Show)                 (LPOLEOBJECT, BOOL);
  253.     OLESTATUS      (CALLBACK* DoVerb)               (LPOLEOBJECT, UINT, BOOL, BOOL);
  254.     OLESTATUS      (CALLBACK* GetData)              (LPOLEOBJECT, OLECLIPFORMAT, HANDLE FAR*);
  255.     OLESTATUS      (CALLBACK* SetData)              (LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
  256.     OLESTATUS      (CALLBACK* SetTargetDevice)      (LPOLEOBJECT, HGLOBAL);
  257.     OLESTATUS      (CALLBACK* SetBounds)            (LPOLEOBJECT, OLE_CONST RECT FAR*);
  258.     OLECLIPFORMAT  (CALLBACK* EnumFormats)          (LPOLEOBJECT, OLECLIPFORMAT);
  259.     OLESTATUS      (CALLBACK* SetColorScheme)       (LPOLEOBJECT, OLE_CONST LOGPALETTE FAR*);
  260.     /* Server has to implement only the above methods. */
  261.  
  262. #ifndef SERVERONLY
  263.     /* Extra methods required for client. */
  264.     OLESTATUS      (CALLBACK* Delete)               (LPOLEOBJECT);
  265.     OLESTATUS      (CALLBACK* SetHostNames)         (LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR);
  266.     OLESTATUS      (CALLBACK* SaveToStream)         (LPOLEOBJECT, LPOLESTREAM);
  267.     OLESTATUS      (CALLBACK* Clone)                (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
  268.     OLESTATUS      (CALLBACK* CopyFromLink)         (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
  269.     OLESTATUS      (CALLBACK* Equal)                (LPOLEOBJECT, LPOLEOBJECT);
  270.     OLESTATUS      (CALLBACK* CopyToClipboard)      (LPOLEOBJECT);
  271.     OLESTATUS      (CALLBACK* Draw)                 (LPOLEOBJECT, HDC, OLE_CONST RECT FAR*, OLE_CONST RECT FAR*, HDC);
  272.     OLESTATUS      (CALLBACK* Activate)             (LPOLEOBJECT, UINT, BOOL, BOOL, HWND, OLE_CONST RECT FAR*);
  273.     OLESTATUS      (CALLBACK* Execute)              (LPOLEOBJECT, HGLOBAL, UINT);
  274.     OLESTATUS      (CALLBACK* Close)                (LPOLEOBJECT);
  275.     OLESTATUS      (CALLBACK* Update)               (LPOLEOBJECT);
  276.     OLESTATUS      (CALLBACK* Reconnect)            (LPOLEOBJECT);
  277.  
  278.     OLESTATUS      (CALLBACK* ObjectConvert)        (LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR, LPOLEOBJECT FAR*);
  279.     OLESTATUS      (CALLBACK* GetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE FAR*);
  280.     OLESTATUS      (CALLBACK* SetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE);
  281.  
  282.     OLESTATUS      (CALLBACK* Rename)               (LPOLEOBJECT, OLE_LPCSTR);
  283.     OLESTATUS      (CALLBACK* QueryName)            (LPOLEOBJECT, LPSTR, UINT FAR*);
  284.  
  285.     OLESTATUS      (CALLBACK* QueryType)            (LPOLEOBJECT, LONG FAR*);
  286.     OLESTATUS      (CALLBACK* QueryBounds)          (LPOLEOBJECT, RECT FAR*);
  287.     OLESTATUS      (CALLBACK* QuerySize)            (LPOLEOBJECT, DWORD FAR*);
  288.     OLESTATUS      (CALLBACK* QueryOpen)            (LPOLEOBJECT);
  289.     OLESTATUS      (CALLBACK* QueryOutOfDate)       (LPOLEOBJECT);
  290.  
  291.     OLESTATUS      (CALLBACK* QueryReleaseStatus)   (LPOLEOBJECT);
  292.     OLESTATUS      (CALLBACK* QueryReleaseError)    (LPOLEOBJECT);
  293.     OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT);
  294.  
  295.     OLESTATUS      (CALLBACK* RequestData)          (LPOLEOBJECT, OLECLIPFORMAT);
  296.     OLESTATUS      (CALLBACK* ObjectLong)           (LPOLEOBJECT, UINT, LONG FAR*);
  297.  
  298. /* This method is internal only */
  299.     OLESTATUS      (CALLBACK* ChangeData)           (LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL);
  300. #endif  /* !SERVERONLY */
  301. } OLEOBJECTVTBL;
  302. typedef  OLEOBJECTVTBL FAR* LPOLEOBJECTVTBL;
  303.  
  304. #ifndef OLE_INTERNAL
  305. typedef struct _OLEOBJECT
  306. {
  307.     LPOLEOBJECTVTBL    lpvtbl;
  308. } OLEOBJECT;
  309. #endif
  310.  
  311. /* ole client definitions */
  312. typedef struct _OLECLIENTVTBL
  313. {
  314.     int (CALLBACK* CallBack)(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT);
  315. } OLECLIENTVTBL;
  316.  
  317. typedef  OLECLIENTVTBL FAR*  LPOLECLIENTVTBL;
  318.  
  319. typedef struct _OLECLIENT
  320. {
  321.     LPOLECLIENTVTBL   lpvtbl;
  322. } OLECLIENT;
  323.  
  324. /* Stream definitions */
  325. typedef struct _OLESTREAMVTBL
  326. {
  327.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  328.     DWORD (CALLBACK* Put)(LPOLESTREAM, OLE_CONST void FAR*, DWORD);
  329. } OLESTREAMVTBL;
  330. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  331.  
  332. typedef struct _OLESTREAM
  333. {
  334.     LPOLESTREAMVTBL      lpstbl;
  335. } OLESTREAM;
  336.  
  337. /* Public Function Prototypes */
  338. OLESTATUS   WINAPI  OleDelete(LPOLEOBJECT);
  339. OLESTATUS   WINAPI  OleRelease(LPOLEOBJECT);
  340. OLESTATUS   WINAPI  OleSaveToStream(LPOLEOBJECT, LPOLESTREAM);
  341. OLESTATUS   WINAPI  OleEqual(LPOLEOBJECT, LPOLEOBJECT );
  342. OLESTATUS   WINAPI  OleCopyToClipboard(LPOLEOBJECT);
  343. OLESTATUS   WINAPI  OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR);
  344. OLESTATUS   WINAPI  OleSetTargetDevice(LPOLEOBJECT, HGLOBAL);
  345. OLESTATUS   WINAPI  OleSetBounds(LPOLEOBJECT, const RECT FAR*);
  346. OLESTATUS   WINAPI  OleSetColorScheme(LPOLEOBJECT, const LOGPALETTE FAR*);
  347. OLESTATUS   WINAPI  OleQueryBounds(LPOLEOBJECT, RECT FAR*);
  348. OLESTATUS   WINAPI  OleQuerySize(LPOLEOBJECT, DWORD FAR*);
  349. OLESTATUS   WINAPI  OleDraw(LPOLEOBJECT, HDC, const RECT FAR*, const RECT FAR*, HDC);
  350. OLESTATUS   WINAPI  OleQueryOpen(LPOLEOBJECT);
  351. OLESTATUS   WINAPI  OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, const RECT FAR*);
  352. OLESTATUS   WINAPI  OleExecute(LPOLEOBJECT, HGLOBAL, UINT);
  353. OLESTATUS   WINAPI  OleClose(LPOLEOBJECT);
  354. OLESTATUS   WINAPI  OleUpdate(LPOLEOBJECT);
  355. OLESTATUS   WINAPI  OleReconnect(LPOLEOBJECT);
  356. OLESTATUS   WINAPI  OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE FAR*);
  357. OLESTATUS   WINAPI  OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE);
  358. void FAR*   WINAPI  OleQueryProtocol(LPOLEOBJECT, LPCSTR);
  359.  
  360. /* Routines related to asynchronous operations. */
  361. OLESTATUS   WINAPI  OleQueryReleaseStatus(LPOLEOBJECT);
  362. OLESTATUS   WINAPI  OleQueryReleaseError(LPOLEOBJECT);
  363. OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
  364.  
  365. OLESTATUS   WINAPI  OleQueryType(LPOLEOBJECT, LONG FAR*);
  366.  
  367. /* LOWORD is major version, HIWORD is minor version */
  368. DWORD       WINAPI  OleQueryClientVersion(void);
  369. DWORD       WINAPI  OleQueryServerVersion(void);
  370.  
  371. /* Converting to format (as in clipboard): */
  372. OLECLIPFORMAT  WINAPI  OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT);
  373. OLESTATUS   WINAPI  OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE FAR*);
  374. OLESTATUS   WINAPI  OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
  375. OLESTATUS   WINAPI  OleQueryOutOfDate(LPOLEOBJECT);
  376. OLESTATUS   WINAPI  OleRequestData(LPOLEOBJECT, OLECLIPFORMAT);
  377.  
  378. /* Query apis for creation from clipboard */
  379. OLESTATUS   WINAPI  OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
  380. OLESTATUS   WINAPI  OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
  381.  
  382. /* Object creation functions */
  383. OLESTATUS   WINAPI  OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR,  LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  384. OLESTATUS   WINAPI  OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  385. OLESTATUS   WINAPI  OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  386. OLESTATUS   WINAPI  OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  387. OLESTATUS   WINAPI  OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
  388. OLESTATUS   WINAPI  OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  389. OLESTATUS   WINAPI  OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
  390. OLESTATUS   WINAPI  OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*, OLEOPT_RENDER, OLECLIPFORMAT);
  391. OLESTATUS   WINAPI  OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
  392. OLESTATUS   WINAPI  OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
  393. OLESTATUS   WINAPI  OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR, LPOLEOBJECT FAR*);
  394. OLESTATUS   WINAPI  OleRename(LPOLEOBJECT, LPCSTR);
  395. OLESTATUS   WINAPI  OleQueryName(LPOLEOBJECT, LPSTR, UINT FAR*);
  396. OLESTATUS   WINAPI  OleRevokeObject(LPOLECLIENT);
  397. BOOL        WINAPI  OleIsDcMeta(HDC);
  398.  
  399. /* client document API */
  400. OLESTATUS   WINAPI  OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC FAR*);
  401. OLESTATUS   WINAPI  OleRevokeClientDoc(LHCLIENTDOC);
  402. OLESTATUS   WINAPI  OleRenameClientDoc(LHCLIENTDOC, LPCSTR);
  403. OLESTATUS   WINAPI  OleRevertClientDoc(LHCLIENTDOC);
  404. OLESTATUS   WINAPI  OleSavedClientDoc(LHCLIENTDOC);
  405. OLESTATUS   WINAPI  OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT FAR*);
  406.  
  407. /* server usage definitions */
  408. typedef enum {
  409.     OLE_SERVER_MULTI,           /* multiple instances */
  410.     OLE_SERVER_SINGLE           /* single instance(multiple document) */
  411. } OLE_SERVER_USE;
  412.  
  413. /* Server API */
  414. typedef struct _OLESERVER FAR*  LPOLESERVER;
  415.  
  416. OLESTATUS   WINAPI  OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER FAR*, HINSTANCE, OLE_SERVER_USE);
  417. OLESTATUS   WINAPI  OleRevokeServer(LHSERVER);
  418. OLESTATUS   WINAPI  OleBlockServer(LHSERVER);
  419. OLESTATUS   WINAPI  OleUnblockServer(LHSERVER, BOOL FAR*);
  420.  
  421. /* APIs to keep server open */
  422. OLESTATUS   WINAPI  OleLockServer(LPOLEOBJECT, LHSERVER FAR*);
  423. OLESTATUS   WINAPI  OleUnlockServer(LHSERVER);
  424.  
  425. /* Server document API */
  426.  
  427. typedef struct _OLESERVERDOC FAR*  LPOLESERVERDOC;
  428.  
  429. OLESTATUS   WINAPI  OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC, LHSERVERDOC FAR*);
  430. OLESTATUS   WINAPI  OleRevokeServerDoc(LHSERVERDOC);
  431. OLESTATUS   WINAPI  OleRenameServerDoc(LHSERVERDOC, LPCSTR);
  432. OLESTATUS   WINAPI  OleRevertServerDoc(LHSERVERDOC);
  433. OLESTATUS   WINAPI  OleSavedServerDoc(LHSERVERDOC);
  434.  
  435. typedef struct _OLESERVERVTBL
  436. {
  437.     OLESTATUS (CALLBACK* Open)  (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC FAR*);
  438.                                     /* long handle to doc(privtate to DLL)  */
  439.                                     /* lp to OLESERVER                      */
  440.                                     /* document name                        */
  441.                                     /* place holder for returning oledoc.   */
  442.  
  443.     OLESTATUS (CALLBACK* Create)(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
  444.                                     /* long handle to doc(privtate to DLL)  */
  445.                                     /* lp to OLESERVER                      */
  446.                                     /* lp class name                        */
  447.                                     /* lp doc name                          */
  448.                                     /* place holder for returning oledoc.   */
  449.  
  450.     OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
  451.                                     /* long handle to doc(privtate to DLL)  */
  452.                                     /* lp to OLESERVER                      */
  453.                                     /* lp class name                        */
  454.                                     /* lp doc name                          */
  455.                                     /* lp template name                     */
  456.                                     /* place holder for returning oledoc.   */
  457.  
  458.     OLESTATUS (CALLBACK* Edit)  (LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR, LPOLESERVERDOC FAR*);
  459.                                     /* long handle to doc(privtate to DLL)  */
  460.                                     /* lp to OLESERVER                      */
  461.                                     /* lp class name                        */
  462.                                     /* lp doc name                          */
  463.                                     /* place holder for returning oledoc.   */
  464.  
  465.     OLESTATUS (CALLBACK* Exit)  (LPOLESERVER);
  466.                                     /* lp OLESERVER                         */
  467.  
  468.     OLESTATUS (CALLBACK* Release)  (LPOLESERVER);
  469.                                     /* lp OLESERVER                         */
  470.  
  471.     OLESTATUS (CALLBACK* Execute)(LPOLESERVER, HGLOBAL);
  472.                                     /* lp OLESERVER                         */
  473.                                     /* handle to command strings            */
  474. } OLESERVERVTBL;
  475. typedef  OLESERVERVTBL FAR*  LPOLESERVERVTBL;
  476.  
  477. typedef struct _OLESERVER
  478. {
  479.     LPOLESERVERVTBL    lpvtbl;
  480. } OLESERVER;
  481.  
  482. typedef struct _OLESERVERDOCVTBL
  483. {
  484.     OLESTATUS (CALLBACK* Save)      (LPOLESERVERDOC);
  485.     OLESTATUS (CALLBACK* Close)     (LPOLESERVERDOC);
  486.     OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR);
  487.     OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC, OLE_CONST RECT FAR*);
  488.     OLESTATUS (CALLBACK* GetObject) (LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT FAR*, LPOLECLIENT);
  489.     OLESTATUS (CALLBACK* Release)   (LPOLESERVERDOC);
  490.     OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC, OLE_CONST LOGPALETTE FAR*);
  491.     OLESTATUS (CALLBACK* Execute)  (LPOLESERVERDOC, HGLOBAL);
  492. } OLESERVERDOCVTBL;
  493. typedef  OLESERVERDOCVTBL FAR*  LPOLESERVERDOCVTBL;
  494.  
  495. typedef struct _OLESERVERDOC
  496. {
  497.     LPOLESERVERDOCVTBL lpvtbl;
  498. } OLESERVERDOC;
  499.  
  500. #ifdef __cplusplus
  501. }
  502. #endif  /* __cplusplus */
  503.  
  504. #ifdef WIN16
  505. #pragma option -b.
  506. #include <poppack.h>
  507. #pragma option -b
  508. #endif
  509.  
  510. #pragma option -b.
  511. #endif  /* !_INC_OLE */
  512.