mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
464 lines
20 KiB
464 lines
20 KiB
|
|
|
|
/****************************************************************/
|
|
/* */
|
|
/* OLE header */
|
|
/* (c) Copyright Microsoft Corp. 1990 - All Rights Reserved */
|
|
/* */
|
|
/****************************************************************/
|
|
|
|
// Object types
|
|
|
|
#define OT_LINK 1L
|
|
#define OT_EMBEDDED 2L
|
|
#define OT_STATIC 3L
|
|
|
|
|
|
// activate verbs
|
|
|
|
#define OLEVERB_PRIMARY 0
|
|
|
|
|
|
// flags used in some methods
|
|
|
|
#define OF_SET 0x0001
|
|
#define OF_GET 0x0002
|
|
#define OF_HANDLER 0x0004
|
|
|
|
|
|
|
|
// return codes for OLE functions
|
|
typedef enum {
|
|
OLE_OK, // 0 Function operated correctly
|
|
|
|
OLE_WAIT_FOR_RELEASE, // 1 Command has been initiated, client
|
|
// must wait for release. keep dispatching
|
|
// messages till OLE_RELESE in callback
|
|
|
|
OLE_BUSY, // 2 Tried to execute a method while another
|
|
// method is in progress.
|
|
|
|
OLE_ERROR_PROTECT_ONLY, // 3 Ole APIs are called in real mode
|
|
OLE_ERROR_MEMORY, // 4 Could not alloc or lock memory
|
|
OLE_ERROR_STREAM, // 5 (OLESTREAM) stream error
|
|
OLE_ERROR_STATIC, // 6 Non static object expected
|
|
OLE_ERROR_BLANK, // 7 Critical data missing
|
|
OLE_ERROR_DRAW, // 8 Error while drawing
|
|
OLE_ERROR_METAFILE, // 9 Invalid metafile
|
|
OLE_ERROR_ABORT, // 10 Client chose to abort metafile drawing
|
|
OLE_ERROR_CLIPBOARD, // 11 Failed to get/set clipboard data
|
|
OLE_ERROR_FORMAT, // 12 Requested format is not available
|
|
OLE_ERROR_OBJECT, // 13 Not a valid object
|
|
OLE_ERROR_OPTION, // 14 Invalid option (link update / render)
|
|
OLE_ERROR_PROTOCOL, // 15 Invalid protocol
|
|
OLE_ERROR_ADDRESS, // 16 One of the pointers is invalid
|
|
OLE_ERROR_NOT_EQUAL, // 17 Objects are not equal
|
|
OLE_ERROR_HANDLE, // 18 Invalid handle encountered
|
|
OLE_ERROR_GENERIC, // 19 Some general error
|
|
OLE_ERROR_CLASS, // 20 Invalid class
|
|
OLE_ERROR_SYNTAX, // 21 Command syntax is invalid
|
|
OLE_ERROR_DATATYPE, // 22 Data format is not supported
|
|
OLE_ERROR_PALETTE, // 23 Invalid color palette
|
|
OLE_ERROR_NOT_LINK, // 24 Not a linked object
|
|
OLE_ERROR_NOT_EMPTY, // 25 Client doc contains objects.
|
|
OLE_ERROR_SIZE, // 26 Incorrect buffer size passed to the api
|
|
// that places some string in caller's
|
|
// buffer
|
|
|
|
OLE_ERROR_DRIVE, // 27 Drive letter in doc name is invalid
|
|
OLE_ERROR_NETWORK, // 28 Failed to establish connection to a
|
|
// network share on which the document
|
|
// is located
|
|
|
|
OLE_ERROR_NAME, // 29 Invalid name (doc name, object name),
|
|
// etc.. passed to the APIs
|
|
|
|
OLE_ERROR_TEMPLATE, // 30 Server failed to load template
|
|
OLE_ERROR_NEW, // 31 Server failed to create new doc
|
|
OLE_ERROR_EDIT, // 32 Server failed to create embedded
|
|
// instance
|
|
OLE_ERROR_OPEN, // 33 Server failed to open document,
|
|
// possible invalid link
|
|
|
|
OLE_ERROR_NOT_OPEN, // 34 Object is not open for editing
|
|
OLE_ERROR_LAUNCH, // 35 Failed to launch server
|
|
OLE_ERROR_COMM, // 36 Failed to communicate with server
|
|
OLE_ERROR_TERMINATE, // 37 Error in termination
|
|
OLE_ERROR_COMMAND, // 38 Error in execute
|
|
OLE_ERROR_SHOW, // 39 Error in show
|
|
OLE_ERROR_DOVERB, // 40 Error in sending do verb, or invalid
|
|
// verb
|
|
OLE_ERROR_ADVISE_NATIVE, // 41 Item could be missing
|
|
OLE_ERROR_ADVISE_PICT, // 42 Item could be missing or server doesn't
|
|
// this format.
|
|
|
|
OLE_ERROR_ADVISE_RENAME, // 43 Server doesn't support rename
|
|
OLE_ERROR_POKE_NATIVE, // 44 Failure of poking native data to server
|
|
OLE_ERROR_REQUEST_NATIVE, // 45 Server failed to render native data
|
|
OLE_ERROR_REQUEST_PICT, // 46 Server failed to render presentation
|
|
// data
|
|
OLE_ERROR_SERVER_BLOCKED, // 47 Trying to block a blocked server or
|
|
// trying to revoke a blocked server
|
|
// or document
|
|
|
|
OLE_ERROR_REGISTRATION, // 48 Server is not registered in regestation
|
|
// data base
|
|
OLE_ERROR_ALREADY_REGISTERED,//49 Trying to register same doc multiple
|
|
// times
|
|
OLE_ERROR_TASK, // 50 Server or client task is invalid
|
|
OLE_ERROR_OUTOFDATE, // 51 Object is out of date
|
|
OLE_ERROR_CANT_UPDATE_CLIENT,// 52 embed doc's client doesn't accept
|
|
// updates
|
|
OLE_ERROR_UPDATE, // 53 erorr while trying to update
|
|
|
|
// Following are warnings
|
|
OLE_WARN_DELETE_DATA = 1000 // Caller must delete the data when he is
|
|
// done with it.
|
|
} OLESTATUS;
|
|
|
|
|
|
|
|
// Codes for CallBack events
|
|
typedef enum {
|
|
OLE_CHANGED, // 0
|
|
OLE_SAVED, // 1
|
|
OLE_CLOSED, // 2
|
|
OLE_RENAMED, // 3
|
|
OLE_QUERY_PAINT, // 4 Interruptible paint support
|
|
OLE_RELEASE, // 5 Object is released (asynchronous operation
|
|
// is completed)
|
|
OLE_QUERY_RETRY, // 6 Query for retry when server sends busy ACK
|
|
} OLE_NOTIFICATION;
|
|
|
|
|
|
typedef enum {
|
|
OLE_NONE, // 0 no method active
|
|
OLE_DELETE, // 1 object delete
|
|
OLE_LNKPASTE, // 2 PasteLink (auto reconnect)
|
|
OLE_EMBPASTE, // 3 paste (and update)
|
|
OLE_SHOW, // 4 Show
|
|
OLE_RUN, // 5 Run
|
|
OLE_ACTIVATE, // 6 Activate
|
|
OLE_UPDATE, // 7 Update
|
|
OLE_CLOSE, // 8 Close
|
|
OLE_RECONNECT, // 9 Reconnect
|
|
OLE_SETUPDATEOPTIONS, // 10 setting update options
|
|
OLE_SERVERUNLAUNCH, // 11 server is being unlaunched
|
|
OLE_LOADFROMSTREAM, // 12 LoadFromStream (auto reconnect)
|
|
OLE_SETDATA, // 13 OleSetData
|
|
OLE_REQUESTDATA, // 14 OleRequestData
|
|
OLE_OTHER, // 15 other misc async operations
|
|
OLE_CREATE, // 16 create
|
|
OLE_CREATEFROMTEMPLATE, // 17 CreatefromTemplate
|
|
OLE_CREATELINKFROMFILE, // 18 CreateLinkFromFile
|
|
OLE_COPYFROMLNK, // 19 CopyFromLink (auto reconnect)
|
|
OLE_CREATEFROMFILE, // 20 CreateFromFile
|
|
} OLE_RELEASE_METHOD;
|
|
|
|
// rendering options
|
|
typedef enum { olerender_none, olerender_draw, olerender_format } OLEOPT_RENDER;
|
|
|
|
typedef UINT OLECLIPFORMAT; // standard clipboard format type
|
|
|
|
|
|
// Link update options
|
|
typedef enum { oleupdate_always,
|
|
oleupdate_onsave,
|
|
oleupdate_oncall,
|
|
#ifdef OLE_INTERNAL
|
|
oleupdate_onclose
|
|
#endif
|
|
} OLEOPT_UPDATE;
|
|
|
|
typedef HANDLE HOBJECT;
|
|
typedef LONG LHSERVER;
|
|
typedef LONG LHCLIENTDOC;
|
|
typedef LONG LHSERVERDOC;
|
|
|
|
typedef struct _OLEOBJECT FAR * LPOLEOBJECT;
|
|
typedef struct _OLESTREAM FAR * LPOLESTREAM;
|
|
typedef struct _OLECLIENT FAR * LPOLECLIENT;
|
|
|
|
#ifndef OLE_INTERNAL
|
|
// object method table definitions.
|
|
typedef struct _OLEOBJECTVTBL{
|
|
LPVOID (FAR PASCAL *QueryProtocol) (LPOLEOBJECT, LPSTR);
|
|
OLESTATUS (FAR PASCAL *Release) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *Show) (LPOLEOBJECT, BOOL);
|
|
OLESTATUS (FAR PASCAL *DoVerb) (LPOLEOBJECT, UINT, BOOL, BOOL);
|
|
OLESTATUS (FAR PASCAL *GetData) (LPOLEOBJECT, OLECLIPFORMAT, LPHANDLE);
|
|
OLESTATUS (FAR PASCAL *SetData) (LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
|
|
OLESTATUS (FAR PASCAL *SetTargetDevice) (LPOLEOBJECT, HANDLE);
|
|
OLESTATUS (FAR PASCAL *SetBounds) (LPOLEOBJECT, LPRECT);
|
|
OLECLIPFORMAT (FAR PASCAL *EnumFormats) (LPOLEOBJECT, OLECLIPFORMAT);
|
|
OLESTATUS (FAR PASCAL *SetColorScheme) (LPOLEOBJECT, LPLOGPALETTE);
|
|
|
|
// Server has to implement only the above methods.
|
|
|
|
#ifndef SERVERONLY
|
|
// Extra methods required for client.
|
|
OLESTATUS (FAR PASCAL *Delete) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *SetHostNames) (LPOLEOBJECT, LPSTR, LPSTR);
|
|
OLESTATUS (FAR PASCAL *SaveToStream) (LPOLEOBJECT, LPOLESTREAM);
|
|
OLESTATUS (FAR PASCAL *Clone) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
OLESTATUS (FAR PASCAL *CopyFromLink) (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
OLESTATUS (FAR PASCAL *Equal) (LPOLEOBJECT, LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *CopyToClipboard) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *Draw) (LPOLEOBJECT, HDC, LPRECT, LPRECT, HDC);
|
|
OLESTATUS (FAR PASCAL *Activate) (LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPRECT);
|
|
OLESTATUS (FAR PASCAL *Execute) (LPOLEOBJECT, HANDLE, UINT);
|
|
OLESTATUS (FAR PASCAL *Close) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *Update) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *Reconnect) (LPOLEOBJECT);
|
|
|
|
OLESTATUS (FAR PASCAL *ObjectConvert) (LPOLEOBJECT, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
OLESTATUS (FAR PASCAL *GetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE FAR *);
|
|
OLESTATUS (FAR PASCAL *SetLinkUpdateOptions) (LPOLEOBJECT, OLEOPT_UPDATE);
|
|
|
|
OLESTATUS (FAR PASCAL *Rename) (LPOLEOBJECT, LPSTR);
|
|
OLESTATUS (FAR PASCAL *QueryName) (LPOLEOBJECT, LPSTR, UINT FAR *);
|
|
|
|
OLESTATUS (FAR PASCAL *QueryType) (LPOLEOBJECT, LPLONG);
|
|
OLESTATUS (FAR PASCAL *QueryBounds) (LPOLEOBJECT, LPRECT);
|
|
OLESTATUS (FAR PASCAL *QuerySize) (LPOLEOBJECT, DWORD FAR *);
|
|
OLESTATUS (FAR PASCAL *QueryOpen) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *QueryOutOfDate) (LPOLEOBJECT);
|
|
|
|
OLESTATUS (FAR PASCAL *QueryReleaseStatus) (LPOLEOBJECT);
|
|
OLESTATUS (FAR PASCAL *QueryReleaseError) (LPOLEOBJECT);
|
|
OLE_RELEASE_METHOD (FAR PASCAL *QueryReleaseMethod)(LPOLEOBJECT);
|
|
|
|
OLESTATUS (FAR PASCAL *RequestData) (LPOLEOBJECT, OLECLIPFORMAT);
|
|
OLESTATUS (FAR PASCAL *ObjectLong) (LPOLEOBJECT, UINT, LPLONG);
|
|
|
|
// This method is internal only
|
|
OLESTATUS (FAR PASCAL *ChangeData) (LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL);
|
|
#endif
|
|
} OLEOBJECTVTBL;
|
|
typedef OLEOBJECTVTBL FAR *LPOLEOBJECTVTBL;
|
|
|
|
typedef struct _OLEOBJECT {
|
|
LPOLEOBJECTVTBL lpvtbl;
|
|
} OLEOBJECT;
|
|
#endif
|
|
|
|
|
|
// ole client definitions
|
|
|
|
typedef struct _OLECLIENTVTBL{
|
|
int (pascal far *CallBack) (LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT);
|
|
} OLECLIENTVTBL;
|
|
typedef OLECLIENTVTBL FAR *LPOLECLIENTVTBL;
|
|
|
|
|
|
typedef struct _OLECLIENT {
|
|
LPOLECLIENTVTBL lpvtbl;
|
|
} OLECLIENT;
|
|
|
|
|
|
|
|
// Stream definitions
|
|
typedef struct _OLESTREAMVTBL{
|
|
DWORD (pascal far *Get) (LPOLESTREAM, LPSTR, DWORD);
|
|
DWORD (pascal far *Put) (LPOLESTREAM, LPSTR, DWORD);
|
|
} OLESTREAMVTBL;
|
|
|
|
typedef OLESTREAMVTBL FAR *LPOLESTREAMVTBL;
|
|
|
|
typedef struct _OLESTREAM {
|
|
LPOLESTREAMVTBL lpstbl;
|
|
} OLESTREAM;
|
|
|
|
|
|
// Public Function Prototypes
|
|
OLESTATUS FAR PASCAL OleDelete (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleRelease (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleSaveToStream (LPOLEOBJECT, LPOLESTREAM);
|
|
OLESTATUS FAR PASCAL OleEqual (LPOLEOBJECT, LPOLEOBJECT );
|
|
OLESTATUS FAR PASCAL OleCopyToClipboard (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleSetHostNames (LPOLEOBJECT, LPSTR, LPSTR);
|
|
OLESTATUS FAR PASCAL OleSetTargetDevice (LPOLEOBJECT, HANDLE);
|
|
OLESTATUS FAR PASCAL OleSetBounds (LPOLEOBJECT, LPRECT);
|
|
OLESTATUS FAR PASCAL OleSetColorScheme (LPOLEOBJECT, LPLOGPALETTE);
|
|
OLESTATUS FAR PASCAL OleQueryBounds (LPOLEOBJECT, LPRECT);
|
|
OLESTATUS FAR PASCAL OleQuerySize (LPOLEOBJECT, DWORD FAR *);
|
|
OLESTATUS FAR PASCAL OleDraw (LPOLEOBJECT, HDC, LPRECT, LPRECT, HDC);
|
|
OLESTATUS FAR PASCAL OleQueryOpen (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleActivate (LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPRECT);
|
|
OLESTATUS FAR PASCAL OleExecute (LPOLEOBJECT, HANDLE, UINT);
|
|
OLESTATUS FAR PASCAL OleClose (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleUpdate (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleReconnect (LPOLEOBJECT);
|
|
|
|
OLESTATUS FAR PASCAL OleGetLinkUpdateOptions (LPOLEOBJECT, OLEOPT_UPDATE FAR *);
|
|
OLESTATUS FAR PASCAL OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE);
|
|
|
|
|
|
LPVOID FAR PASCAL OleQueryProtocol (LPOLEOBJECT, LPSTR);
|
|
|
|
|
|
// Routines related to asynchronous operations.
|
|
OLESTATUS FAR PASCAL OleQueryReleaseStatus (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleQueryReleaseError (LPOLEOBJECT);
|
|
OLE_RELEASE_METHOD FAR PASCAL OleQueryReleaseMethod (LPOLEOBJECT);
|
|
|
|
OLESTATUS FAR PASCAL OleQueryType (LPOLEOBJECT, LPLONG);
|
|
|
|
// LOW WORD is major version, HIWORD is minor version
|
|
DWORD FAR PASCAL OleQueryClientVersion (void);
|
|
DWORD FAR PASCAL OleQueryServerVersion (void);
|
|
|
|
// Converting to format (as in clipboard):
|
|
OLECLIPFORMAT FAR PASCAL OleEnumFormats (LPOLEOBJECT, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleGetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE FAR *);
|
|
OLESTATUS FAR PASCAL OleSetData (LPOLEOBJECT, OLECLIPFORMAT, HANDLE );
|
|
OLESTATUS FAR PASCAL OleQueryOutOfDate (LPOLEOBJECT);
|
|
OLESTATUS FAR PASCAL OleRequestData (LPOLEOBJECT, OLECLIPFORMAT);
|
|
|
|
|
|
// Query apis for creation from clipboard
|
|
OLESTATUS FAR PASCAL OleQueryLinkFromClip (LPSTR, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
OLESTATUS FAR PASCAL OleQueryCreateFromClip (LPSTR, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
// Object creation functions
|
|
|
|
OLESTATUS FAR PASCAL OleCreateFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleCreateLinkFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleCreateFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleCreateLinkFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleLoadFromStream (LPOLESTREAM, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
|
|
OLESTATUS FAR PASCAL OleCreate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleCreateFromTemplate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
|
|
|
OLESTATUS FAR PASCAL OleClone (LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
OLESTATUS FAR PASCAL OleCopyFromLink (LPOLEOBJECT, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
|
|
OLESTATUS FAR PASCAL OleObjectConvert (LPOLEOBJECT, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
|
|
|
OLESTATUS FAR PASCAL OleRename (LPOLEOBJECT, LPSTR);
|
|
OLESTATUS FAR PASCAL OleQueryName (LPOLEOBJECT, LPSTR, UINT FAR *);
|
|
|
|
|
|
OLESTATUS FAR PASCAL OleRevokeObject (LPOLECLIENT);
|
|
BOOL FAR PASCAL OleIsDcMeta (HDC);
|
|
|
|
// client document API
|
|
|
|
OLESTATUS FAR PASCAL OleRegisterClientDoc (LPSTR, LPSTR, LONG, LHCLIENTDOC FAR *);
|
|
OLESTATUS FAR PASCAL OleRevokeClientDoc (LHCLIENTDOC);
|
|
OLESTATUS FAR PASCAL OleRenameClientDoc (LHCLIENTDOC, LPSTR);
|
|
OLESTATUS FAR PASCAL OleRevertClientDoc (LHCLIENTDOC);
|
|
OLESTATUS FAR PASCAL OleSavedClientDoc (LHCLIENTDOC);
|
|
OLESTATUS FAR PASCAL OleEnumObjects (LHCLIENTDOC, LPOLEOBJECT FAR *);
|
|
|
|
// server usage definitions
|
|
|
|
typedef enum {
|
|
OLE_SERVER_MULTI, // multiple instances
|
|
OLE_SERVER_SINGLE // single instance (multiple document)
|
|
} OLE_SERVER_USE;
|
|
|
|
|
|
// Server API
|
|
|
|
typedef struct _OLESERVER FAR * LPOLESERVER;
|
|
|
|
OLESTATUS FAR PASCAL OleRegisterServer (LPSTR, LPOLESERVER, LHSERVER FAR *, HANDLE, OLE_SERVER_USE);
|
|
OLESTATUS FAR PASCAL OleRevokeServer (LHSERVER);
|
|
OLESTATUS FAR PASCAL OleBlockServer (LHSERVER);
|
|
OLESTATUS FAR PASCAL OleUnblockServer (LHSERVER, BOOL FAR *);
|
|
|
|
|
|
// APIs to keep server open
|
|
OLESTATUS FAR PASCAL OleLockServer (LPOLEOBJECT, LHSERVER FAR *);
|
|
OLESTATUS FAR PASCAL OleUnlockServer (LHSERVER);
|
|
|
|
|
|
// Server document API
|
|
|
|
typedef struct _OLESERVERDOC FAR * LPOLESERVERDOC;
|
|
|
|
OLESTATUS FAR PASCAL OleRegisterServerDoc (LHSERVER, LPSTR, LPOLESERVERDOC, LHSERVERDOC FAR *);
|
|
OLESTATUS FAR PASCAL OleRevokeServerDoc (LHSERVERDOC);
|
|
OLESTATUS FAR PASCAL OleRenameServerDoc (LHSERVERDOC, LPSTR);
|
|
OLESTATUS FAR PASCAL OleRevertServerDoc (LHSERVERDOC);
|
|
OLESTATUS FAR PASCAL OleSavedServerDoc (LHSERVERDOC);
|
|
|
|
|
|
typedef struct _OLESERVERVTBL{
|
|
OLESTATUS (FAR PASCAL *Open) (LPOLESERVER, LHSERVERDOC, LPSTR, LPOLESERVERDOC FAR *);
|
|
// long handle to doc (privtate to DLL)
|
|
// lp to OLESERVER
|
|
// document name
|
|
// place holder for returning oledoc.
|
|
|
|
|
|
OLESTATUS (FAR PASCAL *Create) (LPOLESERVER, LHSERVERDOC, LPSTR, LPSTR, LPOLESERVERDOC FAR *);
|
|
// long handle to doc (privtate to DLL)
|
|
// lp to OLESERVER
|
|
// lp class name
|
|
// lp doc name
|
|
// place holder for returning oledoc.
|
|
|
|
|
|
OLESTATUS (FAR PASCAL *CreateFromTemplate) (LPOLESERVER, LHSERVERDOC, LPSTR, LPSTR, LPSTR, LPOLESERVERDOC FAR *);
|
|
|
|
// long handle to doc (privtate to DLL)
|
|
// lp to OLESERVER
|
|
// lp class name
|
|
// lp doc name
|
|
// lp template name
|
|
// place holder for returning oledoc.
|
|
|
|
|
|
OLESTATUS (FAR PASCAL *Edit) (LPOLESERVER, LHSERVERDOC, LPSTR, LPSTR, LPOLESERVERDOC FAR *);
|
|
|
|
// long handle to doc (privtate to DLL)
|
|
// lp to OLESERVER
|
|
// lp class name
|
|
// lp doc name
|
|
// place holder for returning oledoc.
|
|
|
|
OLESTATUS (FAR PASCAL *Exit) (LPOLESERVER);
|
|
|
|
// lp OLESERVER
|
|
|
|
|
|
OLESTATUS (FAR PASCAL *Release) (LPOLESERVER);
|
|
// lp OLESERVER
|
|
|
|
OLESTATUS (FAR PASCAL *Execute) (LPOLESERVER, HANDLE);
|
|
// lp OLESERVER
|
|
// handle to command strings
|
|
|
|
} OLESERVERVTBL;
|
|
|
|
typedef OLESERVERVTBL FAR *LPOLESERVERVTBL;
|
|
typedef struct _OLESERVER {
|
|
LPOLESERVERVTBL lpvtbl;
|
|
} OLESERVER;
|
|
|
|
|
|
typedef struct _OLEDOCMENTVTBL{
|
|
OLESTATUS (FAR PASCAL *Save) (LPOLESERVERDOC);
|
|
OLESTATUS (FAR PASCAL *Close) (LPOLESERVERDOC);
|
|
OLESTATUS (FAR PASCAL *SetHostNames) (LPOLESERVERDOC, LPSTR, LPSTR);
|
|
OLESTATUS (FAR PASCAL *SetDocDimensions) (LPOLESERVERDOC, LPRECT);
|
|
OLESTATUS (FAR PASCAL *GetObject) (LPOLESERVERDOC, LPSTR, LPOLEOBJECT FAR *, LPOLECLIENT);
|
|
OLESTATUS (FAR PASCAL *Release) (LPOLESERVERDOC);
|
|
OLESTATUS (FAR PASCAL *SetColorScheme) (LPOLESERVERDOC, LPLOGPALETTE);
|
|
OLESTATUS (FAR PASCAL *Execute) (LPOLESERVERDOC, HANDLE);
|
|
} OLESERVERDOCVTBL;
|
|
|
|
|
|
typedef OLESERVERDOCVTBL FAR *LPOLESERVERDOCVTBL;
|
|
typedef struct _OLESERVERDOC {
|
|
LPOLESERVERDOCVTBL lpvtbl;
|
|
} OLESERVERDOC;
|