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.
160 lines
6.2 KiB
160 lines
6.2 KiB
/****************************Module*Header******************************\
|
|
* Copyright (c) 1987 - 1991 Microsoft Corporation *
|
|
\***********************************************************************/
|
|
#define SERVERONLY
|
|
|
|
#ifdef STRICT
|
|
#undef STRICT
|
|
#define PB_STRICT
|
|
#endif
|
|
|
|
#include "ole.h"
|
|
|
|
#ifdef PB_STRICT
|
|
#define STRICT
|
|
#undef PB_STRICT
|
|
#endif
|
|
|
|
|
|
#ifndef OLE_20
|
|
typedef CHAR OLECHAR;
|
|
typedef LPSTR POLESTR;
|
|
|
|
#else
|
|
typedef TCHAR OLECHAR;
|
|
typedef LPTSTR POLESTR;
|
|
#endif
|
|
|
|
/* Server definitions */
|
|
typedef struct _PBSRVR {
|
|
OLESERVER olesrvr;
|
|
HANDLE hsrvr; // handle to our server
|
|
LHSERVER lhsrvr; // registration handle
|
|
} PBSRVR, FAR *PPBSRVR;
|
|
|
|
/* Document definitions */
|
|
typedef struct _PBDOC {
|
|
OLESERVERDOC oledoc;
|
|
HANDLE hdoc; // handle to our document
|
|
LHSERVERDOC lhdoc; // registration handle
|
|
ATOM aName; // document name
|
|
/* Handle to server? */
|
|
} PBDOC, FAR *PPBDOC;
|
|
|
|
typedef struct _ITEM {
|
|
OLEOBJECT oleobject;
|
|
HANDLE hitem;
|
|
LPOLECLIENT lpoleclient;
|
|
RECT rc; /* Subrectangle */
|
|
int ref; /* # of references to document */
|
|
ATOM aName;
|
|
} ITEM, FAR *PITEM;
|
|
|
|
/* Clipboard formats */
|
|
extern WORD vcfLink;
|
|
extern WORD vcfOwnerLink;
|
|
extern WORD vcfNative;
|
|
|
|
/* OLE document/object/server virtual tables */
|
|
extern OLESERVERDOCVTBL vdocvtbl;
|
|
extern OLEOBJECTVTBL vitemvtbl;
|
|
extern OLESERVERVTBL vsrvrvtbl;
|
|
|
|
/* Are we running on an embedding or not? */
|
|
extern BOOL fServer;
|
|
extern BOOL vfIsLink;
|
|
extern BOOL fSendData;
|
|
|
|
/* Since Paint has only once instance, only one server/doc */
|
|
/* The items are just RECTs over the document, possibly overlapping */
|
|
#define CMAXITEMS 80
|
|
extern PPBSRVR vpsrvr;
|
|
extern PPBDOC vpdoc;
|
|
extern PITEM vpitem[];
|
|
extern int cItems;
|
|
extern BOOL fServer;
|
|
extern BOOL fOLE;
|
|
extern BOOL fLoading;
|
|
extern int iExitWithSaving;
|
|
extern BOOL fInvisible; /* Are we /embedding, the first time? */
|
|
extern int nCmdShowSaved;
|
|
|
|
/* What part of the image has been modified? */
|
|
extern RECT vrcModified;
|
|
|
|
/* Function prototypes */
|
|
void FreeVTbls(void);
|
|
void InitVTbls(HINSTANCE hInst);
|
|
/************************ App Server Functions ************************/
|
|
BOOL InitServer(HINSTANCE hInst);
|
|
void DeleteServer(PPBSRVR psrvr);
|
|
|
|
/************************* SERVER VTBL FUNCTIONS **************************/
|
|
OLESTATUS FAR PASCAL SrvrOpen(LPOLESERVER lpolesrvr, LHSERVERDOC lhdoc,
|
|
POLESTR lpdocname, LPOLESERVERDOC FAR *lplpoledoc);
|
|
OLESTATUS FAR PASCAL SrvrCreate(LPOLESERVER lpolesrvr, LHSERVERDOC lhdoc,
|
|
POLESTR lpclassname, POLESTR lpdocname, LPOLESERVERDOC FAR *lplpoledoc);
|
|
OLESTATUS FAR PASCAL SrvrCreateFromTemplate(LPOLESERVER lpolesrvr,
|
|
LHSERVERDOC lhdoc, POLESTR lpclassname, POLESTR lpOLEdocname,
|
|
POLESTR lpOLEtemplatename, LPOLESERVERDOC FAR *lplpoledoc);
|
|
OLESTATUS FAR PASCAL SrvrEdit(LPOLESERVER lpolesrvr, LHSERVERDOC lhdoc,
|
|
POLESTR lpclassname, POLESTR lpOLEdocname, LPOLESERVERDOC FAR *lplpoledoc);
|
|
OLESTATUS FAR PASCAL SrvrExit(LPOLESERVER lpolesrvr);
|
|
OLESTATUS FAR PASCAL SrvrRelease(LPOLESERVER lpolesrvr);
|
|
|
|
/********************* DOCUMENT FUNCTIONS ********************/
|
|
PPBDOC InitDoc(PPBSRVR psrvr, LHSERVERDOC lhdoc, LPTSTR lptitle);
|
|
void DeleteDoc(PPBDOC pdoc);
|
|
void ChangeDocName(PPBDOC FAR *ppdoc, LPTSTR lpname);
|
|
|
|
/********************** Document VTable Functions *********************/
|
|
OLESTATUS FAR PASCAL DocSave(LPOLESERVERDOC lpoledoc);
|
|
OLESTATUS FAR PASCAL DocClose(LPOLESERVERDOC lpoledoc);
|
|
OLESTATUS FAR PASCAL DocRelease(LPOLESERVERDOC lpoledoc);
|
|
OLESTATUS FAR PASCAL DocGetObject(LPOLESERVERDOC lpoledoc, POLESTR pitemname,
|
|
LPOLEOBJECT FAR *lplpoleobject, LPOLECLIENT lpoleclient);
|
|
OLESTATUS FAR PASCAL DocSetHostNames(LPOLESERVERDOC lpoledoc,
|
|
POLESTR lpOLEclientName, POLESTR lpOLEdocName);
|
|
OLESTATUS FAR PASCAL DocSetDocDimensions(LPOLESERVERDOC lpoledoc, LPRECT lprc);
|
|
OLESTATUS FAR PASCAL DocSetColorScheme(LPOLESERVERDOC lpoledoc, LPLOGPALETTE lppal);
|
|
|
|
/**************************** ITEM SUBROUTINES ***************************/
|
|
void FAR CutCopyObjectFormats(HDC hDC, HBITMAP hBitmap, RECT rc, WORD msg);
|
|
PITEM CreateNewItem(PPBDOC pdoc);
|
|
BOOL SendDocChangeMsg(PPBDOC pdoc, WORD options);
|
|
BOOL SendItemChangeMsg(PITEM pitem, WORD options);
|
|
|
|
/********************* Item VTable Subroutines **************************/
|
|
OLESTATUS FAR PASCAL ItemOpen(LPOLEOBJECT lpoleobject);
|
|
OLESTATUS FAR PASCAL ItemDelete(LPOLEOBJECT lpoleobject);
|
|
OLESTATUS FAR PASCAL ItemGetData(LPOLEOBJECT lpoleobject,
|
|
OLECLIPFORMAT cfFormat, LPHANDLE lphandle);
|
|
OLESTATUS FAR PASCAL ItemSetData(LPOLEOBJECT lpoleobject,
|
|
OLECLIPFORMAT cfFormat, HANDLE hdata);
|
|
OLESTATUS FAR PASCAL ItemShow(LPOLEOBJECT lpoleobject, BOOL fActivate);
|
|
OLESTATUS FAR PASCAL ItemSetBounds(LPOLEOBJECT lpoleobject, LPRECT lprc);
|
|
OLESTATUS FAR PASCAL ItemSetTargetDevice(LPOLEOBJECT lpoleobject, HANDLE h);
|
|
OLECLIPFORMAT FAR PASCAL ItemEnumFormats(LPOLEOBJECT lpoleobject,
|
|
OLECLIPFORMAT cfFormat);
|
|
LPVOID FAR PASCAL ItemQueryProtocol(LPOLEOBJECT lpoleobject, POLESTR lpprotocol);
|
|
OLESTATUS FAR PASCAL ItemSetColorScheme(LPOLEOBJECT lpoleobject, LPLOGPALETTE lppal);
|
|
OLESTATUS CALLBACK ItemDoVerb(LPOLEOBJECT lpoleobject,
|
|
UINT wVerb, BOOL fShow, BOOL fActivate);
|
|
|
|
/******************** APPLICATION SUPPLIED FUNCTIONS *********************/
|
|
PPBDOC CreateNewDoc(PPBSRVR psrvr, LHSERVERDOC lhdoc, LPTSTR lpstr);
|
|
PPBDOC CreateDocFromFile(PPBSRVR psrvr, LPTSTR lpstr, LHSERVERDOC lhdoc, LPTSTR lpstrDocName);
|
|
HANDLE GetNative(HDC hDC, HBITMAP hBItmap, RECT rc);
|
|
BOOL PutNative(PITEM pitem, HWND hWnd, HANDLE hdata);
|
|
int GetItemName(LPTSTR lpstr, int cbMax);
|
|
|
|
PITEM AddItem(PITEM pitem);
|
|
BOOL DeleteItem(PITEM pitem);
|
|
int FndItem(PITEM pitem);
|
|
|
|
void ScanRect(LPTSTR lpstr, LPRECT rc);
|
|
int OutRect(LPTSTR lpstr, int cb, RECT rc);
|
|
HANDLE GetLink(RECT rc);
|
|
HBITMAP GetBitmap(PITEM pitem);
|
|
HANDLE GetMF(HDC hDC, HBITMAP hBitmap, RECT rc);
|
|
void FAR UnfixMenus(void);
|