959 lines
39 KiB
C
959 lines
39 KiB
C
|
/****************************** Module Header ******************************\
|
||
|
* Module Name: dll.h
|
||
|
*
|
||
|
* PURPOSE: Private definitions file for ole.c
|
||
|
*
|
||
|
* Created: 1990
|
||
|
*
|
||
|
* Copyright (c) 1990, 1991 Microsoft Corporation
|
||
|
*
|
||
|
* History:
|
||
|
* Raor, Srinik (../../90,91) Original
|
||
|
*
|
||
|
\***************************************************************************/
|
||
|
|
||
|
#define OLE_INTERNAL
|
||
|
|
||
|
#include "cmacs.h"
|
||
|
#include "ole.h"
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Defines, Object methods table and Structures. //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
#ifndef HUGE
|
||
|
#define HUGE huge
|
||
|
#endif
|
||
|
|
||
|
// Different OS version numbers. One of these values will be in the HIWORD
|
||
|
// of the OLE version field
|
||
|
|
||
|
#define OS_WIN16 0x0000
|
||
|
#define OS_MAC 0x0001
|
||
|
#define OS_WIN32 0x0002
|
||
|
|
||
|
|
||
|
// Characteristics Type Field
|
||
|
#define CT_NULL 0L
|
||
|
#define CT_LINK 1L
|
||
|
#define CT_EMBEDDED 2L
|
||
|
#define CT_STATIC 3L
|
||
|
#define CT_OLDLINK 4L
|
||
|
#define CT_PICTURE 5L
|
||
|
|
||
|
#define OLE_NO 0 // for boolean query functions
|
||
|
#define OLE_YES 1 // for boolean query functions
|
||
|
|
||
|
#define MAX_STR 256
|
||
|
#define MAX_NET_NAME MAX_STR
|
||
|
#define INVALID_INDEX -1
|
||
|
#define MAX_ATOM 256
|
||
|
|
||
|
#define NUM_RENDER 3
|
||
|
|
||
|
#define PROTOCOL_EDIT ((LPSTR)"StdFileEditing")
|
||
|
#define PROTOCOL_STATIC ((LPSTR)"Static")
|
||
|
#define PROTOCOL_EXECUTE ((LPSTR)"StdExecute")
|
||
|
|
||
|
#define READ_ACCESS 0
|
||
|
#define WRITE_ACCESS 1
|
||
|
|
||
|
#define POPUP_NETDLG 1
|
||
|
|
||
|
extern WORD CheckPointer (LPVOID, int);
|
||
|
WORD FARINTERNAL FarCheckPointer (LPVOID, int);
|
||
|
|
||
|
#define PROBE_OLDLINK(lpobj){\
|
||
|
if (lpobj->bOldLink)\
|
||
|
return OLE_ERROR_OBJECT;\
|
||
|
}
|
||
|
|
||
|
|
||
|
#define PROBE_READ(lp){\
|
||
|
if (!CheckPointer(lp, READ_ACCESS))\
|
||
|
return OLE_ERROR_ADDRESS; \
|
||
|
}
|
||
|
|
||
|
#define PROBE_WRITE(lp){\
|
||
|
if (!CheckPointer(lp, WRITE_ACCESS))\
|
||
|
return OLE_ERROR_ADDRESS; \
|
||
|
}
|
||
|
|
||
|
|
||
|
#define FARPROBE_READ(lp){\
|
||
|
if (!FarCheckPointer(lp, READ_ACCESS))\
|
||
|
return OLE_ERROR_ADDRESS; \
|
||
|
}
|
||
|
|
||
|
#define FARPROBE_WRITE(lp){\
|
||
|
if (!FarCheckPointer(lp, WRITE_ACCESS))\
|
||
|
return OLE_ERROR_ADDRESS; \
|
||
|
}
|
||
|
|
||
|
#define PROBE_MODE(bProtMode) {\
|
||
|
if (!bProtMode) \
|
||
|
return OLE_ERROR_PROTECT_ONLY; \
|
||
|
}
|
||
|
|
||
|
extern OLECLIPFORMAT cfBinary;
|
||
|
extern OLECLIPFORMAT cfOwnerLink;
|
||
|
extern OLECLIPFORMAT cfObjectLink;
|
||
|
extern OLECLIPFORMAT cfLink;
|
||
|
extern OLECLIPFORMAT cfNative;
|
||
|
|
||
|
extern ATOM aStdHostNames;
|
||
|
extern ATOM aStdTargetDevice ;
|
||
|
extern ATOM aStdDocDimensions;
|
||
|
extern ATOM aStdDocName;
|
||
|
extern ATOM aStdColorScheme;
|
||
|
extern ATOM aNullArg;
|
||
|
extern ATOM aSave;
|
||
|
extern ATOM aChange;
|
||
|
extern ATOM aClose;
|
||
|
extern ATOM aPackage;
|
||
|
|
||
|
extern HANDLE hInstDLL;
|
||
|
extern DWORD dwVerToFile;
|
||
|
extern DWORD dwVerFromFile;
|
||
|
extern WORD wWinVer;
|
||
|
extern BOOL bProtMode;
|
||
|
|
||
|
// Used by QuerySize() API;
|
||
|
extern DWORD dwObjSize;
|
||
|
|
||
|
extern OLESTREAM dllStream;
|
||
|
extern BOOL bWLO;
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Note: Whenever this table is changed, then we need to update the
|
||
|
// method table in ole.h. Otherwise we are in trouble.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef struct _OLEOBJECTVTBL{
|
||
|
LPVOID (FAR PASCAL *QueryProtocol) (LPVOID, LPSTR);
|
||
|
OLESTATUS (FAR PASCAL *Release) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *Show) (LPVOID, BOOL);
|
||
|
OLESTATUS (FAR PASCAL *DoVerb) (LPVOID, WORD, BOOL, BOOL);
|
||
|
OLESTATUS (FAR PASCAL *GetData) (LPVOID, OLECLIPFORMAT, LPHANDLE);
|
||
|
OLESTATUS (FAR PASCAL *SetData) (LPVOID, OLECLIPFORMAT, HANDLE);
|
||
|
OLESTATUS (FAR PASCAL *SetTargetDevice) (LPVOID, HANDLE);
|
||
|
OLESTATUS (FAR PASCAL *SetBounds) (LPVOID, LPRECT);
|
||
|
OLECLIPFORMAT (FAR PASCAL *EnumFormats) (LPVOID, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *SetColorScheme) (LPVOID, LPLOGPALETTE);
|
||
|
OLESTATUS (FAR PASCAL *Delete) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *SetHostNames) (LPVOID, LPSTR, LPSTR);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *SaveToStream) (LPVOID, LPOLESTREAM);
|
||
|
OLESTATUS (FAR PASCAL *Clone) (LPVOID, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *CopyFromLink) (LPVOID, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *Equal) (LPVOID, LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *CopyToClipboard) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *Draw) (LPVOID, HDC, LPRECT, LPRECT, HDC);
|
||
|
OLESTATUS (FAR PASCAL *Activate) (LPVOID, WORD, BOOL, BOOL, HWND, LPRECT);
|
||
|
OLESTATUS (FAR PASCAL *Execute) (LPVOID, HANDLE, WORD);
|
||
|
OLESTATUS (FAR PASCAL *Close) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *Update) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *Reconnect) (LPVOID);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *ObjectConvert) (LPVOID, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *GetLinkUpdateOptions) (LPVOID, OLEOPT_UPDATE FAR *);
|
||
|
OLESTATUS (FAR PASCAL *SetLinkUpdateOptions) (LPVOID, OLEOPT_UPDATE);
|
||
|
OLESTATUS (FAR PASCAL *Rename) (LPVOID, LPSTR);
|
||
|
OLESTATUS (FAR PASCAL *QueryName) (LPVOID, LPSTR, WORD FAR *);
|
||
|
OLESTATUS (FAR PASCAL *QueryType) (LPVOID, LPLONG);
|
||
|
OLESTATUS (FAR PASCAL *QueryBounds) (LPVOID, LPRECT);
|
||
|
OLESTATUS (FAR PASCAL *QuerySize) (LPVOID, DWORD FAR *);
|
||
|
OLESTATUS (FAR PASCAL *QueryOpen) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *QueryOutOfDate) (LPVOID);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *QueryReleaseStatus) (LPVOID);
|
||
|
OLESTATUS (FAR PASCAL *QueryReleaseError) (LPVOID);
|
||
|
OLE_RELEASE_METHOD (FAR PASCAL *QueryReleaseMethod) (LPVOID);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *RequestData) (LPVOID, OLECLIPFORMAT);
|
||
|
OLESTATUS (FAR PASCAL *ObjectLong) (LPVOID, WORD, LPLONG);
|
||
|
OLESTATUS (FAR PASCAL *ChangeData) (LPVOID, HANDLE, LPOLECLIENT, BOOL);
|
||
|
|
||
|
} OLEOBJECTVTBL;
|
||
|
|
||
|
typedef OLEOBJECTVTBL FAR *LPOLEOBJECTVTBL;
|
||
|
|
||
|
|
||
|
typedef struct _OLEOBJECT { /*object */
|
||
|
LPOLEOBJECTVTBL lpvtbl;
|
||
|
char objId[2];
|
||
|
HOBJECT hobj;
|
||
|
LPOLECLIENT lpclient;
|
||
|
LONG ctype;
|
||
|
LONG cx;
|
||
|
LONG cy;
|
||
|
LONG mm;
|
||
|
int iTable; // Index into the dll table
|
||
|
ATOM aObjName; //** Client
|
||
|
LHCLIENTDOC lhclientdoc; // Document
|
||
|
LPOLEOBJECT lpPrevObj; // related
|
||
|
LPOLEOBJECT lpNextObj; //** fileds
|
||
|
LPOLEOBJECT lpParent; // NULL for LE or Static objects.
|
||
|
} OBJECT;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct _CF_NAME_ATOM {
|
||
|
char * cfName;
|
||
|
ATOM cfAtom;
|
||
|
} CF_NAME_ATOM;
|
||
|
|
||
|
extern CF_NAME_ATOM cfNameAtom[];
|
||
|
|
||
|
|
||
|
typedef struct _METADC {
|
||
|
int xMwo;
|
||
|
int yMwo;
|
||
|
int xMwe;
|
||
|
int yMwe;
|
||
|
int xre;
|
||
|
int yre;
|
||
|
struct _METADC * pNext;
|
||
|
} METADC, *PMETADC;
|
||
|
|
||
|
typedef struct _METAINFO {
|
||
|
METADC headDc;
|
||
|
int xwo;
|
||
|
int ywo;
|
||
|
int xwe;
|
||
|
int ywe;
|
||
|
int xro;
|
||
|
int yro;
|
||
|
} METAINFO, *PMETAINFO;
|
||
|
|
||
|
typedef struct OBJECT_MF { /* object_mf */
|
||
|
OBJECT head;
|
||
|
DWORD sizeBytes;
|
||
|
METAFILEPICT mfp;
|
||
|
HANDLE hmfp;
|
||
|
BOOL fMetaDC;
|
||
|
OLESTATUS error;
|
||
|
int nRecord;
|
||
|
PMETAINFO pMetaInfo;
|
||
|
PMETADC pCurMdc;
|
||
|
} OBJECT_MF;
|
||
|
|
||
|
typedef OBJECT_MF FAR * LPOBJECT_MF;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
OBJECT head;
|
||
|
DWORD sizeBytes;
|
||
|
int xSize; // width in pixels
|
||
|
int ySize; // height in pixels
|
||
|
HBITMAP hBitmap;
|
||
|
} OBJECT_BM;
|
||
|
|
||
|
typedef OBJECT_BM FAR * LPOBJECT_BM;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct _OBJECT_DIB {
|
||
|
OBJECT head;
|
||
|
DWORD sizeBytes;
|
||
|
int xSize;
|
||
|
int ySize;
|
||
|
HANDLE hDIB;
|
||
|
} OBJECT_DIB;
|
||
|
|
||
|
typedef OBJECT_DIB FAR * LPOBJECT_DIB;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
OBJECT head;
|
||
|
OLECLIPFORMAT cfFormat;
|
||
|
ATOM aClass;
|
||
|
DWORD sizeBytes;
|
||
|
HANDLE hData;
|
||
|
} OBJECT_GEN;
|
||
|
|
||
|
typedef OBJECT_GEN FAR * LPOBJECT_GEN;
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct _RENDER_ENTRY { /* dll_entry */
|
||
|
LPSTR lpClass;
|
||
|
ATOM aClass;
|
||
|
OLESTATUS (FARINTERNAL *Load) (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
} RENDER_ENTRY;
|
||
|
|
||
|
|
||
|
typedef struct _DLL_ENTRY {
|
||
|
ATOM aDll; /* global atom for dll name with full path */
|
||
|
HANDLE hDll; /* handle to the dll module */
|
||
|
int cObj; /* count of objects, unload dll when this is 0 */
|
||
|
OLESTATUS (FAR PASCAL *Load) (LPOLESTREAM, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG, ATOM, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *Clip) (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *Link) (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *CreateFromTemplate) (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *Create) (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *CreateFromFile) (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS (FAR PASCAL *CreateLinkFromFile) (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
OLESTATUS (FAR PASCAL *CreateInvisible) (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
|
||
|
|
||
|
} DLL_ENTRY;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in OLE.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
BOOL INTERNAL CheckObject(LPOLEOBJECT);
|
||
|
BOOL FARINTERNAL FarCheckObject(LPOLEOBJECT);
|
||
|
OLESTATUS INTERNAL LeQueryCreateFromClip (LPSTR, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in DEFCREAT.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefLoadFromStream (LPOLESTREAM, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG, ATOM, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateLinkFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateFromTemplate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateLinkFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL DefCreateInvisible (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in PBHANDLR.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbLoadFromStream (LPOLESTREAM, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG, ATOM, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateLinkFromClip (LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateFromTemplate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreate (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateLinkFromFile (LPSTR, LPOLECLIENT, LPSTR, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FAR PASCAL PbCreateInvisible (LPSTR, LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Defines common for le.c, ledde.c, dde.c, doc.c //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
// Constants for chekcing whether the instance is SrvrDLL instance.
|
||
|
|
||
|
#define WW_LPTR 0 // ptr tosrvr/doc/item
|
||
|
#define WW_LE 4 // signature
|
||
|
#define WW_HANDLE 6 // instance handle
|
||
|
|
||
|
#define WC_LE 0x4c45 // LE chars
|
||
|
|
||
|
|
||
|
// command flags
|
||
|
#define ACT_SHOW 0x0001 // show the window
|
||
|
#define ACT_ACTIVATE 0x0002 // activate
|
||
|
#define ACT_DOVERB 0x0004 // Run the item
|
||
|
#define ACT_ADVISE 0x0008 // advise for data
|
||
|
#define ACT_REQUEST 0x0010 // request for data
|
||
|
#define ACT_CLOSE 0x0020 // request for advise only on close
|
||
|
#define ACT_UNLAUNCH 0x0040 // unload the server after all the
|
||
|
#define ACT_TERMSRVR 0x0080 // terminate server
|
||
|
#define ACT_TERMDOC 0x0100 // terminate document
|
||
|
|
||
|
#define ACT_NATIVE 0x0200 // only for LNKed objects, if we
|
||
|
// need native data.
|
||
|
|
||
|
#define ACT_MINIMIZE 0x0400 // launch the app minimized
|
||
|
|
||
|
#define ACT_NOLAUNCH 0x0800 // don't launch the server
|
||
|
|
||
|
|
||
|
#define LN_TEMPLATE 0x0000 // create from template
|
||
|
#define LN_NEW 0x1000 // create new
|
||
|
#define LN_EMBACT 0x2000 // activate emb
|
||
|
#define LN_LNKACT 0x3000 // activate link
|
||
|
#define LN_MASK 0xf000 // launch mask
|
||
|
#define LN_SHIFT 12 // shift count for LN_MASK
|
||
|
|
||
|
typedef struct _EDIT_DDE { /* edit_dde */
|
||
|
HANDLE hInst;
|
||
|
int extraTerm;
|
||
|
HWND hClient;
|
||
|
HWND hServer;
|
||
|
BOOL bTerminating;
|
||
|
BOOL bAbort;
|
||
|
BOOL bCallLater; // used in request cases. if this is FALSE
|
||
|
// then OLE_CHANGED is sent to client
|
||
|
int awaitAck;
|
||
|
HANDLE hopt; // Memory block I may have to free
|
||
|
int nAdviseClose; // count of outstanding advises on closes
|
||
|
int nAdviseSave; // count of outstanding advises on save
|
||
|
HANDLE hData; // Poked data/ temp for holding the
|
||
|
// handle in DDE messages
|
||
|
|
||
|
// busy parameters
|
||
|
LONG lParam; // lparam value in case we need to
|
||
|
// repost the message
|
||
|
WORD msg; // busy repost message
|
||
|
|
||
|
WORD wTimer; // timer id.
|
||
|
} EDIT_DDE;
|
||
|
|
||
|
typedef EDIT_DDE NEAR *PEDIT_DDE;
|
||
|
typedef EDIT_DDE FAR *LPEDIT_DDE;
|
||
|
|
||
|
typedef struct _OBJECT_LE { /* object_le */
|
||
|
OBJECT head;
|
||
|
ATOM app;
|
||
|
ATOM topic;
|
||
|
ATOM item;
|
||
|
ATOM aServer;
|
||
|
BOOL bOldLink; // whether a linked object for old link
|
||
|
BOOL bOleServer; // server which supports the verbs
|
||
|
WORD verb; // verb nuymber;
|
||
|
WORD fCmd; // Command flags;
|
||
|
OLEOPT_UPDATE optUpdate;
|
||
|
OLEOPT_UPDATE optNew; // new update options
|
||
|
LPSTR lptemplate; // ptr to the template string, if
|
||
|
// create from template
|
||
|
|
||
|
ATOM aNetName; // network name on which the doc is
|
||
|
char cDrive; // local drive for that network
|
||
|
DWORD dwNetInfo; // LOW WORD = Net type
|
||
|
// HIGH WORD = Driver version
|
||
|
|
||
|
LPOLEOBJECT lpobjPict;
|
||
|
|
||
|
LONG lAppData; // apps data
|
||
|
LONG lHandlerData; // handler data
|
||
|
|
||
|
HANDLE hnative;
|
||
|
HANDLE hLink;
|
||
|
HANDLE hhostNames; // host name block
|
||
|
HANDLE htargetDevice; // target device info
|
||
|
HANDLE hdocDimensions; // document dimensions
|
||
|
HANDLE hextraData; // reqestdata handle
|
||
|
WORD cfExtra; // extra format data
|
||
|
HANDLE hlogpal; // logiccal palette
|
||
|
|
||
|
|
||
|
WORD oldasyncCmd; // previous asynchronous command
|
||
|
WORD asyncCmd; // asynchronous command
|
||
|
BOOL endAsync; // true if we need to send END_RELEASE.
|
||
|
BOOL bAsync; // true if async command on.
|
||
|
WORD mainRtn; // main async routine
|
||
|
WORD subRtn; // step within the main async routine
|
||
|
WORD mainErr; // failure error
|
||
|
WORD subErr; // step error
|
||
|
WORD errHint; // ;error hint
|
||
|
|
||
|
BOOL bSvrClosing; // TRUE - server in the process of
|
||
|
// closing down
|
||
|
BOOL bUnlaunchLater; // Call EmbLnkDelete from EndAsyncCmd
|
||
|
// if this flag is TRUE
|
||
|
|
||
|
HANDLE hSysEdit; // handle to system edit.
|
||
|
PEDIT_DDE pSysEdit; // near ptr to system edit.
|
||
|
HANDLE hDocEdit; // handle to doc level channel
|
||
|
PEDIT_DDE pDocEdit; // near ptr to the doc level channel
|
||
|
|
||
|
} OBJECT_LE;
|
||
|
typedef OBJECT_LE FAR * LPOBJECT_LE;
|
||
|
|
||
|
|
||
|
typedef struct _CLIENTDOC { /* object_le */
|
||
|
char docId[2];
|
||
|
LPOLEOBJECT lpHeadObj;
|
||
|
LPOLEOBJECT lpTailObj;
|
||
|
ATOM aClass;
|
||
|
ATOM aDoc;
|
||
|
HANDLE hdoc;
|
||
|
struct _CLIENTDOC FAR * lpPrevDoc;
|
||
|
struct _CLIENTDOC FAR * lpNextDoc;
|
||
|
} CLIENTDOC;
|
||
|
typedef CLIENTDOC FAR * LPCLIENTDOC;
|
||
|
|
||
|
|
||
|
typedef struct _HOSTNAMES {
|
||
|
WORD clientNameOffset;
|
||
|
WORD documentNameOffset;
|
||
|
BYTE data[];
|
||
|
} HOSTNAMES;
|
||
|
|
||
|
typedef HOSTNAMES FAR * LPHOSTNAMES;
|
||
|
|
||
|
typedef struct _BOUNDSRECT {
|
||
|
WORD defaultWidth;
|
||
|
WORD defaultHeight;
|
||
|
WORD maxWidth;
|
||
|
WORD maxHeight;
|
||
|
} BOUNDSRECT;
|
||
|
|
||
|
typedef BOUNDSRECT FAR *LPBOUNDSRECT;
|
||
|
|
||
|
|
||
|
// AwaitAck values
|
||
|
#define AA_REQUEST 1
|
||
|
#define AA_ADVISE 2
|
||
|
#define AA_POKE 3
|
||
|
#define AA_EXECUTE 4
|
||
|
#define AA_UNADVISE 5
|
||
|
#define AA_INITIATE 6
|
||
|
|
||
|
// Bits for Positive WM_DDE_ACK
|
||
|
#define POSITIVE_ACK 0x8000
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in LE.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
LPVOID FARINTERNAL LeQueryProtocol (LPOBJECT_LE, LPSTR);
|
||
|
OLESTATUS FARINTERNAL LeRelease (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeClone (LPOBJECT_LE, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOBJECT_LE FAR *);
|
||
|
OLESTATUS FARINTERNAL LeCopyFromLink (LPOBJECT_LE, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOBJECT_LE FAR *);
|
||
|
OLESTATUS FARINTERNAL LeEqual (LPOBJECT_LE, LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeCopy (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeQueryBounds (LPOBJECT_LE, LPRECT);
|
||
|
OLESTATUS FARINTERNAL LeDraw (LPOBJECT_LE, HDC, LPRECT, LPRECT, HDC);
|
||
|
OLECLIPFORMAT FARINTERNAL LeEnumFormat (LPOBJECT_LE, OLECLIPFORMAT);
|
||
|
OLESTATUS FARINTERNAL LeGetData (LPOBJECT_LE, OLECLIPFORMAT, HANDLE FAR *);
|
||
|
OLESTATUS FARINTERNAL LeRequestData (LPOBJECT_LE, OLECLIPFORMAT);
|
||
|
OLESTATUS FARINTERNAL LeQueryOutOfDate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeObjectConvert (LPOBJECT_LE, LPSTR, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *);
|
||
|
OLESTATUS FARINTERNAL LeChangeData (LPOBJECT_LE, HANDLE, LPOLECLIENT, BOOL);
|
||
|
LPOBJECT_LE FARINTERNAL LeCreateBlank(LHCLIENTDOC, LPSTR, LONG);
|
||
|
void FARINTERNAL SetExtents (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeSaveToStream (LPOBJECT_LE, LPOLESTREAM);
|
||
|
OLESTATUS FARINTERNAL LeLoadFromStream (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG, ATOM, OLECLIPFORMAT);
|
||
|
OLESTATUS INTERNAL LeStreamRead (LPOLESTREAM, LPOBJECT_LE);
|
||
|
OLESTATUS INTERNAL LeStreamWrite (LPOLESTREAM, LPOBJECT_LE);
|
||
|
int FARINTERNAL ContextCallBack (LPVOID, OLE_NOTIFICATION);
|
||
|
void INTERNAL DeleteObjectAtoms (LPOBJECT_LE);
|
||
|
void FARINTERNAL DeleteExtraData (LPOBJECT_LE);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeGetUpdateOptions (LPOBJECT_LE, OLEOPT_UPDATE FAR *);
|
||
|
OLESTATUS FARINTERNAL LnkPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, OLECLIPFORMAT);
|
||
|
OLESTATUS FARINTERNAL EmbPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
BOOL INTERNAL SetLink (LPOBJECT_LE, HANDLE, LPSTR FAR *);
|
||
|
HANDLE INTERNAL GetLink (LPOBJECT_LE);
|
||
|
void FARINTERNAL SetEmbeddedTopic (LPOBJECT_LE);
|
||
|
|
||
|
OLESTATUS FAR PASCAL LeQueryReleaseStatus (LPOBJECT_LE);
|
||
|
OLESTATUS FAR PASCAL LeQueryReleaseError (LPOBJECT_LE);
|
||
|
OLE_RELEASE_METHOD FAR PASCAL LeQueryReleaseMethod (LPOBJECT_LE);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeQueryType (LPOBJECT_LE, LPLONG);
|
||
|
OLESTATUS FARINTERNAL LeObjectLong (LPOBJECT_LE, WORD, LPLONG);
|
||
|
|
||
|
|
||
|
void SetNetDrive (LPOBJECT_LE);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in LEDDE.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeDoVerb (LPOBJECT_LE, WORD, BOOL, BOOL);
|
||
|
OLESTATUS FARINTERNAL LeShow (LPOBJECT_LE, BOOL);
|
||
|
OLESTATUS FARINTERNAL LeQueryOpen (LPOBJECT_LE);
|
||
|
BOOL INTERNAL QueryOpen (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeActivate (LPOBJECT_LE, WORD, BOOL, BOOL, HWND, LPRECT);
|
||
|
OLESTATUS FARINTERNAL LeUpdate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL EmbOpen (LPOBJECT_LE, BOOL, BOOL, HWND, LPRECT);
|
||
|
OLESTATUS FARINTERNAL EmbUpdate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL EmbOpenUpdate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LnkOpen (LPOBJECT_LE, BOOL, BOOL, HWND, LPRECT);
|
||
|
OLESTATUS FARINTERNAL LnkUpdate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LnkOpenUpdate (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeClose (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeReconnect (LPOBJECT_LE);
|
||
|
OLESTATUS INTERNAL PokeNativeData (LPOBJECT_LE);
|
||
|
BOOL INTERNAL PostMessageToServer (PEDIT_DDE, WORD, LONG);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeCreateFromTemplate (LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeCreate (LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeCreateInvisible (LPOLECLIENT, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
|
||
|
|
||
|
OLESTATUS FARINTERNAL CreateFromClassOrTemplate (LPOLECLIENT, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, WORD, LPSTR, LHCLIENTDOC, LPSTR);
|
||
|
|
||
|
OLESTATUS FARINTERNAL CreateEmbLnkFromFile (LPOLECLIENT, LPSTR, LPSTR, LPSTR, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
OLESTATUS FARINTERNAL LeSetUpdateOptions (LPOBJECT_LE, OLEOPT_UPDATE);
|
||
|
|
||
|
void INTERNAL AdvisePict (LPOBJECT_LE, ATOM);
|
||
|
void INTERNAL UnAdvisePict (LPOBJECT_LE);
|
||
|
int INTERNAL GetPictType (LPOBJECT_LE);
|
||
|
void INTERNAL AdviseOn (LPOBJECT_LE, int, ATOM);
|
||
|
void INTERNAL UnAdviseOn (LPOBJECT_LE, int);
|
||
|
void INTERNAL RequestOn (LPOBJECT_LE, int);
|
||
|
void INTERNAL RequestPict (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeSetHostNames (LPOBJECT_LE, LPSTR, LPSTR);
|
||
|
OLESTATUS INTERNAL PokeHostNames (LPOBJECT_LE);
|
||
|
OLESTATUS INTERNAL SetHostNamesHandle (LPOBJECT_LE, LPSTR, LPSTR);
|
||
|
void INTERNAL FreePokeData (LPOBJECT_LE, PEDIT_DDE);
|
||
|
OLESTATUS INTERNAL SendPokeData (LPOBJECT_LE, ATOM, HANDLE, OLECLIPFORMAT);
|
||
|
OLESTATUS FARINTERNAL LeSetTargetDevice (LPOBJECT_LE, HANDLE);
|
||
|
OLESTATUS INTERNAL PokeTargetDeviceInfo (LPOBJECT_LE);
|
||
|
OLESTATUS INTERNAL PokeDocDimensions (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeSetBounds (LPOBJECT_LE, LPRECT);
|
||
|
OLESTATUS FARINTERNAL LeSetData (LPOBJECT_LE, OLECLIPFORMAT, HANDLE);
|
||
|
BOOL INTERNAL SendSrvrMainCmd (LPOBJECT_LE, LPSTR);
|
||
|
ATOM INTERNAL ExtendAtom (LPOBJECT_LE, ATOM);
|
||
|
BOOL INTERNAL CreatePictObject (LHCLIENTDOC, LPSTR, LPOBJECT_LE, OLEOPT_RENDER, OLECLIPFORMAT, LPSTR);
|
||
|
BOOL INTERNAL IsSrvrDLLwnd (HWND, HANDLE);
|
||
|
OLESTATUS INTERNAL ChangeDocAndItem (LPOBJECT_LE, HANDLE);
|
||
|
BOOL QueryUnlaunch (LPOBJECT_LE);
|
||
|
BOOL QueryClose (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL LeSetColorScheme (LPOBJECT_LE, LPLOGPALETTE);
|
||
|
OLESTATUS INTERNAL PokeColorScheme (LPOBJECT_LE);
|
||
|
OLESTATUS FARINTERNAL ProbeAsync (LPOBJECT_LE);
|
||
|
BOOL INTERNAL IsServerValid (LPOBJECT_LE);
|
||
|
BOOL INTERNAL IsWindowValid (HWND);
|
||
|
OLESTATUS FARINTERNAL LeExecute (LPOBJECT_LE, HANDLE, WORD);
|
||
|
void INTERNAL FreeGDIdata (HANDLE, OLECLIPFORMAT);
|
||
|
BOOL INTERNAL CanPutHandleInPokeBlock (LPOBJECT_LE, OLECLIPFORMAT);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in DDE.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
long FARINTERNAL DocWndProc(HWND, unsigned, WORD, LONG );
|
||
|
long FARINTERNAL SrvrWndProc(HWND, unsigned, WORD, LONG );
|
||
|
BOOL INTERNAL CheckAtomValid (ATOM);
|
||
|
void INTERNAL HandleAckInitMsg (PEDIT_DDE, HWND);
|
||
|
BOOL INTERNAL HandleAck (LPOBJECT_LE, PEDIT_DDE, DWORD);
|
||
|
void INTERNAL HandleDataMsg (LPOBJECT_LE, HANDLE, ATOM);
|
||
|
void INTERNAL HandleTermMsg (LPOBJECT_LE, PEDIT_DDE, HWND, BOOL);
|
||
|
void INTERNAL HandleTimerMsg (LPOBJECT_LE, PEDIT_DDE);
|
||
|
void INTERNAL SetData (LPOBJECT_LE, HANDLE, int);
|
||
|
BOOL INTERNAL DeleteBusyData (LPOBJECT_LE, PEDIT_DDE);
|
||
|
void INTERNAL DeleteAbortData (LPOBJECT_LE, PEDIT_DDE);
|
||
|
|
||
|
BOOL INTERNAL WaitDDE (HWND, BOOL);
|
||
|
BOOL INTERNAL WaitDDEAck (PEDIT_DDE);
|
||
|
|
||
|
BOOL INTERNAL InitSrvrConv (LPOBJECT_LE, HANDLE);
|
||
|
void INTERNAL TermSrvrConv (LPOBJECT_LE);
|
||
|
void INTERNAL DeleteSrvrEdit (LPOBJECT_LE);
|
||
|
BOOL INTERNAL SrvrExecute (LPOBJECT_LE, HANDLE);
|
||
|
void INTERNAL SendStdExit (LPOBJECT_LE);
|
||
|
void INTERNAL SendStdClose (LPOBJECT_LE);
|
||
|
void INTERNAL SendStdExit (LPOBJECT_LE);
|
||
|
|
||
|
BOOL FARINTERNAL InitDocConv (LPOBJECT_LE, BOOL);
|
||
|
BOOL INTERNAL DocExecute (LPOBJECT_LE, HANDLE);
|
||
|
void INTERNAL TermDocConv (LPOBJECT_LE);
|
||
|
void INTERNAL DeleteDocEdit (LPOBJECT_LE);
|
||
|
|
||
|
HANDLE INTERNAL LeLaunchApp (LPOBJECT_LE);
|
||
|
HANDLE INTERNAL LoadApp (LPSTR, WORD);
|
||
|
|
||
|
int INTERNAL ScanItemOptions (ATOM, int FAR *);
|
||
|
void INTERNAL ChangeDocName (LPOBJECT_LE, LPSTR);
|
||
|
BOOL INTERNAL CanCallback (LPOBJECT_LE, int);
|
||
|
|
||
|
void FARINTERNAL CallEmbLnkDelete (LPOBJECT_LE);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Picture Object routines used by routines in other modules //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
LPOBJECT_BM FARINTERNAL BmCreateBlank (LHCLIENTDOC, LPSTR, LONG);
|
||
|
OLESTATUS FARINTERNAL BmLoadFromStream (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
OLESTATUS FARINTERNAL BmPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
|
||
|
|
||
|
LPOBJECT_DIB FARINTERNAL DibCreateBlank (LHCLIENTDOC, LPSTR, LONG);
|
||
|
LPOBJECT_DIB FARINTERNAL DibCreateObject (HANDLE, LPOLECLIENT, BOOL, LHCLIENTDOC, LPSTR, LONG);
|
||
|
OLESTATUS FARINTERNAL DibLoadFromStream (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
OLESTATUS FARINTERNAL DibPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
|
||
|
|
||
|
LPOBJECT_MF FARINTERNAL MfCreateBlank (LHCLIENTDOC, LPSTR, LONG);
|
||
|
LPOBJECT_MF FARINTERNAL MfCreateObject (HANDLE, LPOLECLIENT, BOOL, LHCLIENTDOC, LPSTR, LONG);
|
||
|
|
||
|
OLESTATUS FARINTERNAL MfLoadFromStream (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
OLESTATUS FARINTERNAL MfPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG);
|
||
|
|
||
|
|
||
|
LPOBJECT_GEN FARINTERNAL GenCreateBlank (LHCLIENTDOC, LPSTR, LONG, ATOM);
|
||
|
OLESTATUS FARINTERNAL GenLoadFromStream (LPOLESTREAM, LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LONG, ATOM, OLECLIPFORMAT);
|
||
|
OLESTATUS FARINTERNAL GenPaste (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, LPSTR, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in MAIN.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
void FARINTERNAL UnloadDll (void);
|
||
|
int FARINTERNAL LoadDll (LPSTR);
|
||
|
void FARINTERNAL DecreaseHandlerObjCount (int);
|
||
|
|
||
|
void FARINTERNAL RemoveLinkStringFromTopic (LPOBJECT_LE);
|
||
|
|
||
|
OLESTATUS FARINTERNAL CreatePictFromClip (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LPSTR, LONG);
|
||
|
|
||
|
OLESTATUS FARINTERNAL CreatePackageFromClip (LPOLECLIENT, LHCLIENTDOC, LPSTR, LPOLEOBJECT FAR *, OLEOPT_RENDER, OLECLIPFORMAT, LONG);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in UTILS.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
BOOL PutStrWithLen (LPOLESTREAM, LPSTR);
|
||
|
BOOL GetStrWithLen (LPOLESTREAM, LPSTR);
|
||
|
ATOM GetAtomFromStream (LPOLESTREAM);
|
||
|
BOOL PutAtomIntoStream (LPOLESTREAM, ATOM);
|
||
|
BOOL GetBytes (LPOLESTREAM, LPSTR, LONG);
|
||
|
BOOL PutBytes (LPOLESTREAM, LPSTR, LONG);
|
||
|
BOOL QueryApp (LPSTR, LPSTR, LPSTR);
|
||
|
HANDLE MapStrToH (LPSTR);
|
||
|
void UtilMemClr (PSTR, WORD);
|
||
|
BOOL QueryHandler (WORD);
|
||
|
|
||
|
OLESTATUS INTERNAL FileExists (LPOBJECT_LE);
|
||
|
ATOM FARINTERNAL GetAppAtom (LPSTR);
|
||
|
HANDLE FARINTERNAL DuplicateGlobal (HANDLE, WORD);
|
||
|
HANDLE FARINTERNAL CopyData (LPSTR, DWORD);
|
||
|
ATOM FARINTERNAL DuplicateAtom (ATOM);
|
||
|
BOOL FARINTERNAL UtilQueryProtocol (LPOBJECT_LE, LPSTR);
|
||
|
BOOL FARINTERNAL CmpGlobals (HANDLE, HANDLE);
|
||
|
void FARINTERNAL ConvertToHimetric(LPPOINT);
|
||
|
BOOL FARINTERNAL QueryVerb (LPOBJECT_LE, WORD, LPSTR, LONG);
|
||
|
BOOL FARINTERNAL MapExtToClass (LPSTR, LPSTR, int);
|
||
|
int FARINTERNAL GlobalGetAtomLen (ATOM);
|
||
|
void FARINTERNAL UtilMemCpy (LPSTR, LPSTR, DWORD);
|
||
|
BOOL FARINTERNAL UtilMemCmp (LPSTR, LPSTR, DWORD);
|
||
|
BOOL FARINTERNAL IsObjectBlank (LPOBJECT_LE);
|
||
|
|
||
|
OLESTATUS FARINTERNAL ObjQueryName (LPOLEOBJECT, LPSTR, WORD FAR *);
|
||
|
OLESTATUS FARINTERNAL ObjRename (LPOLEOBJECT, LPSTR);
|
||
|
void INTERNAL SetExeAtom (LPOBJECT_LE);
|
||
|
|
||
|
|
||
|
// !!!make a routine and let the macro call the routine
|
||
|
// definitions related to the asynchronous operations.
|
||
|
#define WAIT_FOR_ASYNC_MSG(lpobj) { \
|
||
|
lpobj->subRtn++; \
|
||
|
if (lpobj->bAsync){ \
|
||
|
lpobj->endAsync = TRUE; \
|
||
|
return OLE_WAIT_FOR_RELEASE; \
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
#define STEP_NOP(lpobj) lpobj->subRtn++;
|
||
|
|
||
|
// !!! Assumes all the creates are in order
|
||
|
#define PROBE_CREATE_ASYNC(lpobj) \
|
||
|
if (lpobj->asyncCmd >= OLE_CREATE && \
|
||
|
lpobj->asyncCmd <= OLE_CREATEINVISIBLE) {\
|
||
|
if(ProbeAsync(lpobj) == OLE_BUSY)\
|
||
|
return OLE_BUSY;\
|
||
|
}
|
||
|
|
||
|
#define PROBE_OBJECT_BLANK(lpobj) \
|
||
|
if (lpobj->asyncCmd >= OLE_CREATE && \
|
||
|
lpobj->asyncCmd <= OLE_CREATEFROMFILE) { \
|
||
|
if ((ProbeAsync(lpobj) == OLE_BUSY) && IsObjectBlank(lpobj)) \
|
||
|
return OLE_ERROR_BLANK;\
|
||
|
}
|
||
|
|
||
|
#define PROBE_ASYNC(lpobj)\
|
||
|
if(ProbeAsync(lpobj) == OLE_BUSY)\
|
||
|
return OLE_BUSY;
|
||
|
|
||
|
#define IS_SVRCLOSING(lpobj)\
|
||
|
((lpobj->bUnlaunchLater || lpobj->bSvrClosing) ? TRUE : FALSE)
|
||
|
|
||
|
#define PROBE_SVRCLOSING(lpobj)\
|
||
|
if (IS_SVRCLOSING(lpobj)) \
|
||
|
return OLE_ERROR_NOT_OPEN; \
|
||
|
|
||
|
|
||
|
#define CLEAR_STEP_ERROR(lpobj) lpobj->subErr = OLE_OK;
|
||
|
|
||
|
|
||
|
#define SKIP_TO(a, b) if (a) goto b;
|
||
|
#define RESETERR(lpobj) lpobj->mainErr = OLE_OK
|
||
|
#define SETSTEP(lpobj, no) lpobj->subRtn = no
|
||
|
#define SETERRHINT(lpobj, no) lpobj->errHint = no
|
||
|
#define CLEARASYNCCMD(lpobj) lpobj->asyncCmd = OLE_NONE
|
||
|
|
||
|
// routines.
|
||
|
BOOL ProcessErr (LPOBJECT_LE);
|
||
|
void InitAsyncCmd (LPOBJECT_LE, WORD, WORD);
|
||
|
void NextAsyncCmd (LPOBJECT_LE, WORD);
|
||
|
void ScheduleAsyncCmd (LPOBJECT_LE);
|
||
|
OLESTATUS EndAsyncCmd (LPOBJECT_LE);
|
||
|
OLESTATUS DocShow (LPOBJECT_LE);
|
||
|
OLESTATUS DocRun (LPOBJECT_LE);
|
||
|
void SendStdShow (LPOBJECT_LE);
|
||
|
OLESTATUS EmbLnkClose (LPOBJECT_LE);
|
||
|
OLESTATUS LnkSetUpdateOptions (LPOBJECT_LE);
|
||
|
OLESTATUS EmbSrvrUnlaunch (LPOBJECT_LE);
|
||
|
OLESTATUS LnkChangeLnk (LPOBJECT_LE);
|
||
|
OLESTATUS RequestData (LPOBJECT_LE, OLECLIPFORMAT);
|
||
|
|
||
|
OLESTATUS FARINTERNAL EmbLnkDelete(LPOBJECT_LE);
|
||
|
|
||
|
void FARINTERNAL FarInitAsyncCmd(LPOBJECT_LE, WORD, WORD);
|
||
|
|
||
|
// async command routines.
|
||
|
#define EMBLNKDELETE 1
|
||
|
#define LNKOPENUPDATE 2
|
||
|
#define DOCSHOW 3
|
||
|
#define EMBOPENUPDATE 4
|
||
|
#define EMBLNKCLOSE 5
|
||
|
#define LNKSETUPDATEOPTIONS 6
|
||
|
#define LNKCHANGELNK 7
|
||
|
#define REQUESTDATA 8
|
||
|
#define DOCRUN 9
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in DOC.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
|
||
|
BOOL FARINTERNAL CheckClientDoc (LPCLIENTDOC);
|
||
|
void FARINTERNAL DocAddObject (LPCLIENTDOC, LPOLEOBJECT, LPSTR);
|
||
|
void FARINTERNAL DocDeleteObject (LPOLEOBJECT);
|
||
|
LPOLEOBJECT INTERNAL DocGetNextObject (LPCLIENTDOC, LPOLEOBJECT);
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in NET.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#define IDD_DRIVE 500
|
||
|
#define IDD_PASSWORD 501
|
||
|
#define IDD_PATH 502
|
||
|
|
||
|
#define IDS_NETERR 600
|
||
|
#define IDS_NETCONERRMSG 601
|
||
|
#define IDS_FILENOTFOUNDMSG 602
|
||
|
#define IDS_BADPATHMSG 603
|
||
|
|
||
|
OLESTATUS FARINTERNAL SetNetName (LPOBJECT_LE);
|
||
|
BOOL FARINTERNAL SetNextNetDrive (LPOBJECT_LE, int FAR *, LPSTR);
|
||
|
OLESTATUS FARINTERNAL CheckNetDrive (LPOBJECT_LE, BOOL);
|
||
|
OLESTATUS INTERNAL FixNet (LPOBJECT_LE, LPSTR, BOOL);
|
||
|
OLESTATUS INTERNAL ConnectNet (LPOBJECT_LE, LPSTR);
|
||
|
BOOL FARINTERNAL ChangeTopic (LPOBJECT_LE);
|
||
|
VOID INTERNAL FillDrives (HWND);
|
||
|
int FAR PASCAL ConnectDlgProc(HWND, WORD, WORD, DWORD);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in OLE.ASM //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
WORD GetGDIds (DWORD);
|
||
|
WORD IsMetaDC (HDC, WORD);
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in ERROR.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
OLESTATUS FARINTERNAL ObjQueryType (LPOLEOBJECT, LPLONG);
|
||
|
OLESTATUS FARINTERNAL ObjQuerySize (LPOLEOBJECT, DWORD FAR *);
|
||
|
DWORD PASCAL FAR DllPut (LPOLESTREAM, LPSTR, DWORD);
|
||
|
HANDLE FARINTERNAL DuplicateGDIdata (HANDLE, OLECLIPFORMAT);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// Routines in BM.C //
|
||
|
// //
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
HBITMAP FARINTERNAL BmDuplicate (HBITMAP, DWORD FAR *, LPBITMAP);
|