Leaked source code of windows server 2003
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.
 
 
 
 
 
 

567 lines
24 KiB

/*---------------------------------------------------------------------------
| MPOLE.H
| This file is the header file that has most of the OLE2 specific
| data structures.
|
| Created By: Vij Rajarajan (VijR)
+---------------------------------------------------------------------------*/
#ifndef COBJMACROS
#define COBJMACROS
#endif
#ifdef MTN
#pragma warning(disable: 4103) // used #pragma pack to change alignment (on Chicago)
#endif
#include <ole2.h>
#include <ole2ver.h>
#include <shlobj.h> /* For ResolveLink() */
#include "server.h"
#ifdef INCGUID
#include <initguid.h>
#endif
#define _NOHRESULT
#define INPLACE
#define DRAGDROP
#define RETURN_RESULT(sc) return(ResultFromScode(sc))
// number HIMETRIC units per inch
#define HIMETRIC_PER_INCH 2540
#if (defined(DEBUG) || DBG)
BOOL WriteOLE2Class( );
#endif
/**** 'lindex' related macros ****/
#define DEF_LINDEX -1
#define VERIFY_LINDEX(lindex) { \
if (lindex != -1) \
return (ResultFromScode(E_INVALIDARG)); \
}
// Used to check for "-Embedding" on command line.
#define szEmbeddingFlag "Embedding"
// Maximum length of a fully-qualified pathname.
#define cchFilenameMax 256
//OLE2 CLsids
DEFINE_OLEGUID(CLSID_MPlayer, 0x00022601, 0, 0);
#define CLSID_MPLAYER CLSID_MPlayer
//OLE1 clsid.
DEFINE_OLEGUID(CLSID_Ole1MPlayer, 0x0003000E, 0, 0);
#define CLSID_OLE1MPLAYER CLSID_Ole1MPlayer
extern TCHAR gachProgID[];
extern CLSID gClsID;
extern CLSID gClsIDOLE1Compat; /* This will be MPlayer's OLE1 class ID */
/* if we're servicing a Media Clip object, */
/* otherwise it's the same as gClsID. */
// Sizes of toolbar items
#define TOOLBAR_WIDTH 300
#define TOOL_WIDTH 26
/* Types */
// Document type
typedef enum
{
doctypeNew, // The document is untitled.
doctypeFromFile, // The document exists in a file and may be linked.
doctypeEmbedded, // The document is an embedded document.
} DOCTYPE;
// Verbs
typedef enum
{
verbPlay = OLEIVERB_PRIMARY,
verbEdit,
verbOpen,
verbNil
} VERB;
// Corresponds to the order of the menus in the .rc file.
enum {
menuposFile,
menuposEdit,
menuposDevice,
menuposScale,
menuposHelp
};
#ifdef OLDSTUFF
/* Codes for CallBack events */
/* The first four of these are redefinitions on NT, and the others don't exist: */
typedef enum {
OLE_CHANGED, /* 0 */
OLE_SAVED, /* 1 */
OLE_CLOSED, /* 2 */
OLE_RENAMED, /* 3 */
OLE_SAVEOBJ, /* 4 */
OLE_SIZECHG, /* 5 */
OLE_SHOWOBJ /* 6 */
} OLE_NOTIFICATION;
#endif
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;
#define OLE_SAVEOBJ 7
#define OLE_SIZECHG 8
#define OLE_SHOWOBJ 9
// Server structure
typedef struct
{
IClassFactory olesrvr; // This must be the first field so that
BOOL fEmbedding; // was server launched for embedding
int cRef; // ref count;
int cLock; // Lock count
DWORD dwRegCF;
} SRVR, FAR *LPSRVR;
//InPlace data structure.
typedef struct tagINPLACEDATA {
OLEMENUGROUPWIDTHS menuWidths;
HOLEMENU holemenu;
HMENU hmenuShared;
LPOLEINPLACESITE lpSite;
LPOLEINPLACEUIWINDOW lpUIWindow;
LPOLEINPLACEFRAME lpFrame;
OLEINPLACEFRAMEINFO frameInfo;
BOOL fNoNotification;
BOOL fInContextHelpMode;
} INPLACEDATA, * PINPLACEDATA, FAR* LPINPLACEDATA;
typedef struct DOC FAR* LPDOC;
// Document structure
typedef struct DOC
{
struct COleObjectImpl {
IOleObjectVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_Ole;
struct CDataObjectImpl {
IDataObjectVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_Data;
struct CPersistStorageImpl {
IPersistStorageVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_PersistStorage;
struct COleInPlaceObjectImpl {
IOleInPlaceObjectVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_InPlace;
struct COleInPlaceActiveObjectImpl {
IOleInPlaceActiveObjectVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_IPActive;
struct CPersistFileImpl {
IPersistFileVtbl FAR* lpVtbl;
LPDOC lpdoc;
} m_PersistFile;
int cRef; // ref count.
HWND hwnd; // The object's own window
LPTSTR native; // Object data in native format
LPOLECLIENTSITE lpoleclient; // Client associated with the object
LPDATAADVISEHOLDER lpdaholder; // util instance to hold data advises
LPOLEADVISEHOLDER lpoaholder; // util instance to hold ole advises
DOCTYPE doctype; // Document type
ATOM aDocName; // Document name
HWND hwndParent;
LPINPLACEDATA lpIpData;
int cLock;
} DOC;
typedef struct ClipDragData CLIPDRAGDATA, FAR* LPCLIPDRAGDATA;
typedef struct ClipDragEnum CLIPDRAGENUM, FAR* LPCLIPDRAGENUM;
struct ClipDragData
{
struct CDataObject {
IDataObjectVtbl FAR* lpVtbl;
LPCLIPDRAGDATA lpclipdragdata;
} m_IDataObject;
struct CDropSource {
IDropSourceVtbl FAR* lpVtbl;
LPCLIPDRAGDATA lpclipdragdata;
} m_IDropSource;
LPDOC lpdoc;
int cRef; // ref count
LPCLIPDRAGENUM lpClipDragEnum; // The enumerator
BOOL fClipData; //Is this for Clipboard or Dragdrop
} ;
struct ClipDragEnum
{
IEnumFORMATETCVtbl FAR* lpVtbl;
int cRef; // ref count
LPCLIPDRAGDATA lpClipDragData; // Obj to which enumerator blongs
CLIPFORMAT cfNext; // Next format returned
};
#ifdef LATER
typedef struct _SCALE
{
int num; // Numerator
int denom; // Denominator
}
SCALE, *PSCALE;
extern SCALE gscaleInitXY[2]; // Initial scale to use for inserting OLE objects
#define SCALE_X 0
#define SCALE_Y 1
#endif
/* Global variable declarations. (See SrvrDemo.c for descriptions.) */
extern LPMALLOC lpMalloc;
extern HMENU hmenuMain;
extern SRVR srvrMain;
extern DOC docMain;
extern BOOL fDocChanged;
extern TCHAR szClient[];
extern TCHAR szClientDoc[];
extern int extHeight;
extern int extWidth;
extern TCHAR dbs[];
extern int giXppli, giYppli;
extern BOOL SkipInPlaceEdit;
extern BOOL gfInPlaceResize;
extern BOOL gfOle1Client;
extern HWND ghwndIPHatch;
extern HANDLE ghClipData;
extern HANDLE ghClipMetafile;
extern HANDLE ghClipDib;
extern LONG glCurrentVerb;
extern BOOL gfPosRectChange;
extern RECT gPrevPosRect;
extern BOOL gfInPPViewer;
extern HWND ghwndFrame;
extern HWND ghwndFocusSave;
extern CLIPFORMAT cfNative;
extern CLIPFORMAT cfEmbedSource;
extern CLIPFORMAT cfObjectDescriptor;
extern CLIPFORMAT cfMPlayer;
extern IOleObjectVtbl oleVtbl;
extern IDataObjectVtbl dataVtbl;
extern IEnumFORMATETCVtbl ClipDragEnumVtbl;
extern IClassFactoryVtbl srvrVtbl;
extern IPersistStorageVtbl persistStorageVtbl;
extern IOleInPlaceObjectVtbl ipVtbl;
extern IOleInPlaceActiveObjectVtbl ipActiveVtbl;
extern IDataObjectVtbl clipdragVtbl;
extern IDropSourceVtbl dropsourceVtbl;
#ifdef LATER
extern IDropTargetVtbl droptargetVtbl;
#endif
extern IPersistFileVtbl persistFileVtbl;
/* Function Prototypes */
// Various functions
BOOL InitOLE (PBOOL pfInit, LPMALLOC *ppMalloc);
BOOL CreateDocObjFromFile (LPCTSTR lpszDoc, LPDOC lpdoc);
BOOL ReadObjFromFile(LPTSTR, LPDOC);
BOOL InitNewDocObj (LPDOC lpdoc);
void CutOrCopyObj (LPDOC lpobj);
void DestroyDoc (LPDOC lpdoc);
void DeviceToHiMetric (LPSIZEL lpsizel);
void UpdateObject (void);
BOOL InitServer (HWND hwnd, HANDLE hInst);
void DestroyServer (LPSRVR lpsrvr);
BOOL OpenDoc (UINT wid, LPTSTR lpsz);
BOOL NewDoc (void);
SCODE SendDocMsg (LPDOC lpdoc, WORD wMessage);
BOOL SetTitle (LPDOC lpdoc, LPCTSTR lpszDoc);
BOOL ExitApplication ();
LPCLIPDRAGDATA CreateClipDragDataObject ( LPDOC lpdoc, BOOL fClipData);
void SubClassMCIWindow(void);
void DoDrag(void);
void CleanUpDrag(void);
HANDLE GetLink (VOID);
SCODE ItemSetData(LPBYTE);
STDMETHODIMP DoInPlaceEdit(LPDOC lpdoc, LPMSG lpmsg, LPOLECLIENTSITE pActiveSite, LONG verb, HWND FAR * lphwnd, LPRECT lprect);
void DoInPlaceDeactivate (LPDOC lpdoc);
STDMETHODIMP AssembleMenus (LPDOC lpdoc, BOOL fPlayOnly);
STDMETHODIMP DisassembleMenus (LPDOC lpdoc);
LPTSTR Abbrev (LPTSTR lpsz);
// Server methods
STDMETHODIMP SrvrQueryInterface (LPCLASSFACTORY, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) SrvrAddRef (LPCLASSFACTORY);
STDMETHODIMP_(ULONG) SrvrRelease (LPCLASSFACTORY);
STDMETHODIMP SrvrCreateInstance (LPCLASSFACTORY, LPUNKNOWN, REFIID, LPVOID FAR *);
STDMETHODIMP SrvrLockServer (LPCLASSFACTORY, BOOL);
STDMETHODIMP UnkQueryInterface (LPUNKNOWN, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) UnkAddRef (LPUNKNOWN);
STDMETHODIMP_(ULONG) UnkRelease (LPUNKNOWN);
STDMETHODIMP OleObjQueryInterface (LPOLEOBJECT, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) OleObjAddRef (LPOLEOBJECT);
STDMETHODIMP_(ULONG) OleObjRelease (LPOLEOBJECT);
STDMETHODIMP OleObjSetClientSite (LPOLEOBJECT, LPOLECLIENTSITE);
STDMETHODIMP OleObjGetClientSite (LPOLEOBJECT, LPOLECLIENTSITE FAR*);
STDMETHODIMP OleObjSetHostNames (LPOLEOBJECT, LPCWSTR, LPCWSTR);
STDMETHODIMP OleObjClose (LPOLEOBJECT, DWORD);
STDMETHODIMP OleObjSetMoniker (LPOLEOBJECT, DWORD, LPMONIKER);
STDMETHODIMP OleObjGetMoniker (LPOLEOBJECT, DWORD, DWORD, LPMONIKER FAR*);
STDMETHODIMP OleObjInitFromData (LPOLEOBJECT, LPDATAOBJECT, BOOL, DWORD);
STDMETHODIMP OleObjGetClipboardData (LPOLEOBJECT, DWORD, LPDATAOBJECT FAR*);
STDMETHODIMP OleObjDoVerb (LPOLEOBJECT, LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND, LPCRECT);
STDMETHODIMP OleObjEnumVerbs(LPOLEOBJECT, IEnumOLEVERB FAR* FAR*);
STDMETHODIMP OleObjUpdate(LPOLEOBJECT);
STDMETHODIMP OleObjIsUpToDate(LPOLEOBJECT);
STDMETHODIMP OleObjGetUserClassID (LPOLEOBJECT, CLSID FAR* pClsid);
STDMETHODIMP OleObjGetUserType (LPOLEOBJECT, DWORD, LPWSTR FAR*);
STDMETHODIMP OleObjSetExtent(LPOLEOBJECT, DWORD, LPSIZEL);
STDMETHODIMP OleObjGetExtent(LPOLEOBJECT, DWORD, LPSIZEL);
STDMETHODIMP OleObjAdvise(LPOLEOBJECT, LPADVISESINK, LPDWORD);
STDMETHODIMP OleObjUnadvise(LPOLEOBJECT, DWORD);
STDMETHODIMP OleObjEnumAdvise (LPOLEOBJECT, LPENUMSTATDATA FAR*);
STDMETHODIMP OleObjGetMiscStatus (LPOLEOBJECT, DWORD, DWORD FAR*);
STDMETHODIMP OleObjSetColorScheme (LPOLEOBJECT, LPLOGPALETTE);
STDMETHODIMP DataObjQueryInterface (LPDATAOBJECT, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) DataObjAddRef (LPDATAOBJECT);
STDMETHODIMP_(ULONG) DataObjRelease (LPDATAOBJECT);
STDMETHODIMP DataObjGetData (LPDATAOBJECT, LPFORMATETC, LPSTGMEDIUM);
STDMETHODIMP DataObjGetDataHere (LPDATAOBJECT, LPFORMATETC, LPSTGMEDIUM);
STDMETHODIMP DataObjQueryGetData (LPDATAOBJECT, LPFORMATETC);
STDMETHODIMP DataObjGetCanonicalFormatEtc (LPDATAOBJECT, LPFORMATETC,
LPFORMATETC);
STDMETHODIMP DataObjSetData (LPDATAOBJECT, LPFORMATETC, LPSTGMEDIUM, BOOL);
STDMETHODIMP DataObjEnumFormatEtc (LPDATAOBJECT, DWORD, LPENUMFORMATETC FAR*);
STDMETHODIMP DataObjAdvise(LPDATAOBJECT, FORMATETC FAR*,
DWORD, IAdviseSink FAR*, DWORD FAR*);
STDMETHODIMP DataObjUnadvise(LPDATAOBJECT, DWORD );
STDMETHODIMP DataObjEnumAdvise(LPDATAOBJECT, LPENUMSTATDATA FAR*);
STDMETHODIMP ClipDragEnumQueryInterface (LPENUMFORMATETC, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) ClipDragEnumAddRef (LPENUMFORMATETC);
STDMETHODIMP_(ULONG) ClipDragEnumRelease (LPENUMFORMATETC);
STDMETHODIMP ClipDragEnumNext (LPENUMFORMATETC, ULONG, FORMATETC FAR[],
ULONG FAR*);
STDMETHODIMP ClipDragEnumSkip (LPENUMFORMATETC, ULONG);
STDMETHODIMP ClipDragEnumReset (LPENUMFORMATETC);
STDMETHODIMP ClipDragEnumClone (LPENUMFORMATETC, LPENUMFORMATETC FAR*);
STDMETHODIMP ClipDragUnknownQueryInterface (LPCLIPDRAGDATA, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) ClipDragUnknownAddRef (LPCLIPDRAGDATA);
STDMETHODIMP_(ULONG) ClipDragUnknownRelease (LPCLIPDRAGDATA);
STDMETHODIMP ClipDragQueryInterface (LPDATAOBJECT, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) ClipDragAddRef (LPDATAOBJECT);
STDMETHODIMP_(ULONG) ClipDragRelease (LPDATAOBJECT);
STDMETHODIMP ClipDragGetData (LPDATAOBJECT, LPFORMATETC, LPSTGMEDIUM);
STDMETHODIMP ClipDragGetDataHere (LPDATAOBJECT, LPFORMATETC, LPSTGMEDIUM);
STDMETHODIMP ClipDragQueryGetData (LPDATAOBJECT, LPFORMATETC);
STDMETHODIMP ClipDragGetCanonicalFormatEtc (LPDATAOBJECT,
LPFORMATETC, LPFORMATETC);
STDMETHODIMP ClipDragSetData (LPDATAOBJECT,
LPFORMATETC, LPSTGMEDIUM, BOOL);
STDMETHODIMP ClipDragEnumFormatEtc (LPDATAOBJECT,
DWORD, LPENUMFORMATETC FAR*);
STDMETHODIMP ClipDragAdvise(LPDATAOBJECT, FORMATETC FAR*,
DWORD, IAdviseSink FAR*, DWORD FAR*);
STDMETHODIMP ClipDragUnadvise(LPDATAOBJECT, DWORD );
STDMETHODIMP ClipDragEnumAdvise(LPDATAOBJECT, LPENUMSTATDATA FAR*);
STDMETHODIMP DropSourceQueryInterface (LPDROPSOURCE, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) DropSourceAddRef (LPDROPSOURCE);
STDMETHODIMP_(ULONG) DropSourceRelease (LPDROPSOURCE);
STDMETHODIMP DropSourceQueryContinueDrag (LPDROPSOURCE, BOOL, DWORD );
STDMETHODIMP DropSourceGiveFeedback (LPDROPSOURCE, DWORD );
STDMETHODIMP PSQueryInterface (LPPERSISTSTORAGE, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) PSAddRef (LPPERSISTSTORAGE);
STDMETHODIMP_(ULONG) PSRelease (LPPERSISTSTORAGE);
STDMETHODIMP PSGetClassID(LPPERSISTSTORAGE, CLSID FAR*);
STDMETHODIMP PSIsDirty(LPPERSISTSTORAGE);
STDMETHODIMP PSInitNew (LPPERSISTSTORAGE, LPSTORAGE);
STDMETHODIMP PSLoad (LPPERSISTSTORAGE, LPSTORAGE);
STDMETHODIMP PSSave (LPPERSISTSTORAGE, LPSTORAGE, BOOL);
STDMETHODIMP PSSaveCompleted(LPPERSISTSTORAGE, LPSTORAGE );
STDMETHODIMP PSHandsOffStorage(LPPERSISTSTORAGE);
STDMETHODIMP IPObjQueryInterface (LPOLEINPLACEOBJECT,REFIID, LPVOID FAR*);
STDMETHODIMP_(ULONG) IPObjAddRef (LPOLEINPLACEOBJECT);
STDMETHODIMP_(ULONG) IPObjRelease (LPOLEINPLACEOBJECT);
STDMETHODIMP IPObjGetWindow (LPOLEINPLACEOBJECT, HWND FAR*);
STDMETHODIMP IPObjContextSensitiveHelp (LPOLEINPLACEOBJECT, BOOL);
STDMETHODIMP IPObjInPlaceDeactivate (LPOLEINPLACEOBJECT);
STDMETHODIMP IPObjUIDeactivate (LPOLEINPLACEOBJECT);
STDMETHODIMP IPObjSetObjectRects (LPOLEINPLACEOBJECT, LPCRECT, LPCRECT);
STDMETHODIMP IPObjReactivateAndUndo (LPOLEINPLACEOBJECT);
STDMETHODIMP IPActiveQueryInterface (LPOLEINPLACEACTIVEOBJECT,REFIID, LPVOID FAR*);
STDMETHODIMP_(ULONG) IPActiveAddRef (LPOLEINPLACEACTIVEOBJECT);
STDMETHODIMP_(ULONG) IPActiveRelease (LPOLEINPLACEACTIVEOBJECT);
STDMETHODIMP IPActiveGetWindow (LPOLEINPLACEACTIVEOBJECT, HWND FAR*);
STDMETHODIMP IPActiveContextSensitiveHelp (LPOLEINPLACEACTIVEOBJECT, BOOL);
STDMETHODIMP IPActiveTranslateAccelerator (LPOLEINPLACEACTIVEOBJECT, LPMSG);
STDMETHODIMP IPActiveOnFrameWindowActivate (LPOLEINPLACEACTIVEOBJECT, BOOL);
STDMETHODIMP IPActiveOnDocWindowActivate (LPOLEINPLACEACTIVEOBJECT, BOOL);
STDMETHODIMP IPActiveResizeBorder (LPOLEINPLACEACTIVEOBJECT, LPCRECT, LPOLEINPLACEUIWINDOW,BOOL);
STDMETHODIMP IPActiveEnableModeless (LPOLEINPLACEACTIVEOBJECT, BOOL);
STDMETHODIMP PFQueryInterface (LPPERSISTFILE, REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) PFAddRef (LPPERSISTFILE);
STDMETHODIMP_(ULONG) PFRelease (LPPERSISTFILE);
STDMETHODIMP PFGetClassID(LPPERSISTFILE, CLSID FAR*);
STDMETHODIMP PFIsDirty(LPPERSISTFILE);
STDMETHODIMP PFLoad (LPPERSISTFILE, LPCWSTR, DWORD);
STDMETHODIMP PFSave (LPPERSISTFILE, LPCWSTR, BOOL);
STDMETHODIMP PFSaveCompleted(LPPERSISTFILE, LPCWSTR );
STDMETHODIMP PFGetCurFile(LPPERSISTFILE, LPWSTR FAR*);
typedef enum
{
OLE1_OLEOK, /* 0 Function operated correctly */
OLE1_OLEWAIT_FOR_RELEASE, /* 1 Command has been initiated, client */
/* must wait for release. keep dispatching */
/* messages till OLE1_OLERELESE in callback */
OLE1_OLEBUSY, /* 2 Tried to execute a method while another */
/* method is in progress. */
OLE1_OLEERROR_PROTECT_ONLY, /* 3 Ole APIs are called in real mode */
OLE1_OLEERROR_MEMORY, /* 4 Could not alloc or lock memory */
OLE1_OLEERROR_STREAM, /* 5 (OLESTREAM) stream error */
OLE1_OLEERROR_STATIC, /* 6 Non static object expected */
OLE1_OLEERROR_BLANK, /* 7 Critical data missing */
OLE1_OLEERROR_DRAW, /* 8 Error while drawing */
OLE1_OLEERROR_METAFILE, /* 9 Invalid metafile */
OLE1_OLEERROR_ABORT, /* 10 Client chose to abort metafile drawing */
OLE1_OLEERROR_CLIPBOARD, /* 11 Failed to get/set clipboard data */
OLE1_OLEERROR_FORMAT, /* 12 Requested format is not available */
OLE1_OLEERROR_OBJECT, /* 13 Not a valid object */
OLE1_OLEERROR_OPTION, /* 14 Invalid option(link update / render) */
OLE1_OLEERROR_PROTOCOL, /* 15 Invalid protocol */
OLE1_OLEERROR_ADDRESS, /* 16 One of the pointers is invalid */
OLE1_OLEERROR_NOT_EQUAL, /* 17 Objects are not equal */
OLE1_OLEERROR_HANDLE, /* 18 Invalid handle encountered */
OLE1_OLEERROR_GENERIC, /* 19 Some general error */
OLE1_OLEERROR_CLASS, /* 20 Invalid class */
OLE1_OLEERROR_SYNTAX, /* 21 Command syntax is invalid */
OLE1_OLEERROR_DATATYPE, /* 22 Data format is not supported */
OLE1_OLEERROR_PALETTE, /* 23 Invalid color palette */
OLE1_OLEERROR_NOT_LINK, /* 24 Not a linked object */
OLE1_OLEERROR_NOT_EMPTY, /* 25 Client doc contains objects. */
OLE1_OLEERROR_SIZE, /* 26 Incorrect buffer size passed to the api */
/* that places some string in caller's */
/* buffer */
OLE1_OLEERROR_DRIVE, /* 27 Drive letter in doc name is invalid */
OLE1_OLEERROR_NETWORK, /* 28 Failed to establish connection to a */
/* network share on which the document */
/* is located */
OLE1_OLEERROR_NAME, /* 29 Invalid name(doc name, object name), */
/* etc.. passed to the APIs */
OLE1_OLEERROR_TEMPLATE, /* 30 Server failed to load template */
OLE1_OLEERROR_NEW, /* 31 Server failed to create new doc */
OLE1_OLEERROR_EDIT, /* 32 Server failed to create embedded */
/* instance */
OLE1_OLEERROR_OPEN, /* 33 Server failed to open document, */
/* possible invalid link */
OLE1_OLEERROR_NOT_OPEN, /* 34 Object is not open for editing */
OLE1_OLEERROR_LAUNCH, /* 35 Failed to launch server */
OLE1_OLEERROR_COMM, /* 36 Failed to communicate with server */
OLE1_OLEERROR_TERMINATE, /* 37 Error in termination */
OLE1_OLEERROR_COMMAND, /* 38 Error in execute */
OLE1_OLEERROR_SHOW, /* 39 Error in show */
OLE1_OLEERROR_DOVERB, /* 40 Error in sending do verb, or invalid */
/* verb */
OLE1_OLEERROR_ADVISE_NATIVE, /* 41 Item could be missing */
OLE1_OLEERROR_ADVISE_PICT, /* 42 Item could be missing or server doesn't */
/* this format. */
OLE1_OLEERROR_ADVISE_RENAME, /* 43 Server doesn't support rename */
OLE1_OLEERROR_POKE_NATIVE, /* 44 Failure of poking native data to server */
OLE1_OLEERROR_REQUEST_NATIVE, /* 45 Server failed to render native data */
OLE1_OLEERROR_REQUEST_PICT, /* 46 Server failed to render presentation */
/* data */
OLE1_OLEERROR_SERVER_BLOCKED, /* 47 Trying to block a blocked server or */
/* trying to revoke a blocked server */
/* or document */
OLE1_OLEERROR_REGISTRATION, /* 48 Server is not registered in regestation */
/* data base */
OLE1_OLEERROR_ALREADY_REGISTERED,/*49 Trying to register same doc multiple */
/* times */
OLE1_OLEERROR_TASK, /* 50 Server or client task is invalid */
OLE1_OLEERROR_OUTOFDATE, /* 51 Object is out of date */
OLE1_OLEERROR_CANT_UPDATE_CLIENT,/* 52 Embed doc's client doesn't accept */
/* updates */
OLE1_OLEERROR_UPDATE, /* 53 erorr while trying to update */
OLE1_OLEERROR_SETDATA_FORMAT, /* 54 Server app doesn't understand the */
/* format given to its SetData method */
OLE1_OLEERROR_STATIC_FROM_OTHER_OS,/* 55 trying to load a static object created */
/* on another Operating System */
/* Following are warnings */
OLE1_OLEWARN_DELETE_DATA = 1000 /* Caller must delete the data when he is */
/* done with it. */
} OLE1_OLESTATUS;
typedef OLE1_OLESTATUS (FAR PASCAL *OQOPROC)( LPVOID lpobj
, HWND FAR* lphwnd
, LPRECT lprc
, LPRECT lprcWBounds
);
OLE1_OLESTATUS (FAR PASCAL *OleQueryObjPos)(LPVOID lpobj, HWND FAR* lphwnd, LPRECT lprc, LPRECT lprcWBounds);
extern HMODULE hMciOle;