home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C Programming Starter Kit 2.0
/
SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso
/
bc45
/
msinc.pak
/
OLE2.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-07-23
|
55KB
|
1,657 lines
/*****************************************************************************\
* *
* ole2.h - Main OLE2 header; includes all subcomponents *
* *
* OLE Version 2.0 *
* *
\*****************************************************************************/
/*
* C/C++ Run Time Library - Version 6.5
*
* Copyright (c) 1994 by Borland International
* All Rights Reserved.
*
*/
#if !defined(__FLAT__)
#if !defined( _OLE2_H_ )
#define _OLE2_H_
#define __OLE2_H
#ifndef RC_INVOKED
#pragma warning(disable:4001)
#endif /* RC_INVOKED */
#include <string.h>
/****** Standard Object Definitions *****************************************/
#include <compobj.h>
// *************** FACILITY_ITF scodes common to all interfaces ************
//
// By convention, OLE interfaces divide the FACILITY_ITF range of errors
// into nonoverlapping subranges. If an interface returns a FACILITY_ITF
// scode, it must be from the range associated with that interface or from
// the shared range: OLE_E_FIRST...OLE_E_LAST.
//
// error codes
#define OLE_E_OLEVERB (OLE_E_FIRST)
// invalid OLEVERB structure
#define OLE_E_ADVF (OLE_E_FIRST+1)
// invalid advise flags
#define OLE_E_ENUM_NOMORE (OLE_E_FIRST+2)
// you can't enuemrate any more, because the associated data is missing
#define OLE_E_ADVISENOTSUPPORTED (OLE_E_FIRST+3)
// this implementation doesn't take advises
#define OLE_E_NOCONNECTION (OLE_E_FIRST+4)
// there is no connection for this connection id
#define OLE_E_NOTRUNNING (OLE_E_FIRST+5)
// need run the object to perform this operation
#define OLE_E_NOCACHE (OLE_E_FIRST+6)
// there is no cache to operate on
#define OLE_E_BLANK (OLE_E_FIRST+7)
// Uninitialized object
#define OLE_E_CLASSDIFF (OLE_E_FIRST+8)
// linked object's source class has changed
#define OLE_E_CANT_GETMONIKER (OLE_E_FIRST+9)
// not able to get the moniker of the object
#define OLE_E_CANT_BINDTOSOURCE (OLE_E_FIRST+10)
// not able to bind to the source
#define OLE_E_STATIC (OLE_E_FIRST+11)
// object is static, operation not allowed
#define OLE_E_PROMPTSAVECANCELLED (OLE_E_FIRST+12)
// user cancelled out of save dialog
#define OLE_E_INVALIDRECT (OLE_E_FIRST+13)
// invalid rectangle
#define OLE_E_WRONGCOMPOBJ (OLE_E_FIRST+14)
// compobj.dll is too old for the ole2.dll initialized
#define OLE_E_INVALIDHWND (OLE_E_FIRST+15)
// invalid window handle
#define OLE_E_NOT_INPLACEACTIVE (OLE_E_FIRST+16)
// object is not in any of the inplace active states
#define OLE_E_CANTCONVERT (OLE_E_FIRST+17)
// not able to convert the object
#define OLE_E_NOSTORAGE (OLE_E_FIRST+18)
// not able to perform the operation because object is not given storage yet.
#define DVGEN_E_FIRST (OLE_E_FIRST+100)
#define DV_E_FORMATETC (DVGEN_E_FIRST)
// invalid FORMATETC structure
#define DV_E_DVTARGETDEVICE (DVGEN_E_FIRST+1)
// invalid DVTARGETDEVICE structure
#define DV_E_STGMEDIUM (DVGEN_E_FIRST+2)
// invalid STDGMEDIUM structure
#define DV_E_STATDATA (DVGEN_E_FIRST+3)
// invalid STATDATA structure
#define DV_E_LINDEX (DVGEN_E_FIRST+4)
// invalid lindex
#define DV_E_TYMED (DVGEN_E_FIRST+5)
// invalid tymed
#define DV_E_CLIPFORMAT (DVGEN_E_FIRST+6)
// invalid clipboard format
#define DV_E_DVASPECT (DVGEN_E_FIRST+7)
// invalid aspect(s)
#define DV_E_DVTARGETDEVICE_SIZE (DVGEN_E_FIRST+8)
// tdSize paramter of the DVTARGETDEVICE structure is invalid
#define DV_E_NOIVIEWOBJECT (DVGEN_E_FIRST+9)
// object doesn't support IViewObject interface
// Success codes
#define OLE_S_USEREG (OLE_S_FIRST)
// use the reg database to provide the requested info
#define OLE_S_STATIC (OLE_S_FIRST+1)
// success, but static
#define OLE_S_MAC_CLIPFORMAT (OLE_S_FIRST+2)
// macintosh clipboard format
//*************************** Interface or API specific scodes *************
// Errors for OleConvertOLESTREAMToIStorage and OleConvertIStorageToOLESTREAM
// OLESTREAM Get method failed
#define CONVERT10_E_OLESTREAM_GET (CONVERT10_E_FIRST + 0)
// OLESTREAM Put method failed
#define CONVERT10_E_OLESTREAM_PUT (CONVERT10_E_FIRST + 1)
// Contents of the OLESTREAM not in correct format
#define CONVERT10_E_OLESTREAM_FMT (CONVERT10_E_FIRST + 2)
// There was in an error in a Windows GDI call while converting the bitmap
// to a DIB.
#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB (CONVERT10_E_FIRST + 3)
// Contents of the IStorage not in correct format
#define CONVERT10_E_STG_FMT (CONVERT10_E_FIRST + 4)
// Contents of IStorage is missing one of the standard streams ("\1CompObj",
// "\1Ole", "\2OlePres000"). This may be the storage for a DLL object, or a
// class that does not use the def handler.
#define CONVERT10_E_STG_NO_STD_STREAM (CONVERT10_E_FIRST + 5)
// There was in an error in a Windows GDI call while converting the DIB
// to a bitmap.
#define CONVERT10_E_STG_DIB_TO_BITMAP (CONVERT10_E_FIRST + 6)
// Returned by either API, this scode indicates that the original object
// had no presentation, therefore the converted object does not either.
#define CONVERT10_S_NO_PRESENTATION (CONVERT10_S_FIRST + 0)
// Errors for Clipboard functions
// OpenClipboard Failed
#define CLIPBRD_E_CANT_OPEN (CLIPBRD_E_FIRST + 0)
// EmptyClipboard Failed
#define CLIPBRD_E_CANT_EMPTY (CLIPBRD_E_FIRST + 1)
// SetClipboard Failed
#define CLIPBRD_E_CANT_SET (CLIPBRD_E_FIRST + 2)
// Data on clipboard is invalid
#define CLIPBRD_E_BAD_DATA (CLIPBRD_E_FIRST + 3)
// CloseClipboard Failed
#define CLIPBRD_E_CANT_CLOSE (CLIPBRD_E_FIRST + 4)
/****** OLE value types *****************************************************/
/* rendering options */
typedef enum tagOLERENDER
{
OLERENDER_NONE = 0,
OLERENDER_DRAW = 1,
OLERENDER_FORMAT = 2,
OLERENDER_ASIS = 3
} OLERENDER;
typedef OLERENDER FAR* LPOLERENDER;
// OLE verb; returned by IEnumOLEVERB
typedef struct FARSTRUCT tagOLEVERB
{
LONG lVerb;
LPSTR lpszVerbName;
DWORD fuFlags;
DWORD grfAttribs;
} OLEVERB, FAR* LPOLEVERB;
// Bitwise verb attributes used in OLEVERB.grfAttribs
typedef enum tagOLEVERBATTRIB // bitwise
{
OLEVERBATTRIB_NEVERDIRTIES = 1,
OLEVERBATTRIB_ONCONTAINERMENU = 2
} OLEVERBATTRIB;
// IOleObject::GetUserType optons; determines which form of the string to use
typedef enum tagUSERCLASSTYPE
{
USERCLASSTYPE_FULL = 1,
USERCLASSTYPE_SHORT= 2,
USERCLASSTYPE_APPNAME= 3,
} USERCLASSTYPE;
// bits returned from IOleObject::GetMistStatus
typedef enum tagOLEMISC // bitwise
{
OLEMISC_RECOMPOSEONRESIZE = 1,
OLEMISC_ONLYICONIC = 2,
OLEMISC_INSERTNOTREPLACE = 4,
OLEMISC_STATIC = 8,
OLEMISC_CANTLINKINSIDE = 16,
OLEMISC_CANLINKBYOLE1 = 32,
OLEMISC_ISLINKOBJECT = 64,
OLEMISC_INSIDEOUT = 128,
OLEMISC_ACTIVATEWHENVISIBLE = 256,
OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512
} OLEMISC;
// IOleObject::Close options
typedef enum tagOLECLOSE
{
OLECLOSE_SAVEIFDIRTY = 0,
OLECLOSE_NOSAVE = 1,
OLECLOSE_PROMPTSAVE = 2
} OLECLOSE;
// IOleObject::GetMoniker and IOleClientSite::GetMoniker options; determines
// if and how monikers should be assigned.
typedef enum tagOLEGETMONIKER
{
OLEGETMONIKER_ONLYIFTHERE=1,
OLEGETMONIKER_FORCEASSIGN=2,
OLEGETMONIKER_UNASSIGN=3,
OLEGETMONIKER_TEMPFORUSER=4
} OLEGETMONIKER;
// IOleObject::GetMoniker, IOleObject::SetMoniker and
// IOleClientSite::GetMoniker options; determines which moniker to use
typedef enum tagOLEWHICHMK
{
OLEWHICHMK_CONTAINER=1,
OLEWHICHMK_OBJREL=2,
OLEWHICHMK_OBJFULL=3
} OLEWHICHMK;
#if !defined(__SIZEL_POINTL_RECTL_DEFINED)
#define __SIZEL_POINTL_RECTL_DEFINED
#ifdef WIN32
#define LPSIZEL PSIZEL
#else
typedef struct FARSTRUCT tagSIZEL
{
long cx;
long cy;
} SIZEL, FAR* LPSIZEL;
#endif
#ifdef WIN32
#define LPRECTL PRECTL
#else
typedef struct FARSTRUCT tagRECTL
{
long left;
long top;
long right;
long bottom;
} RECTL, FAR* LPRECTL;
typedef struct FARSTRUCT tagPOINTL {
LONG x;
LONG y;
} POINTL;
#endif
#endif /* __SIZEL_POINTL_RECTL_DEFINED */
#ifndef LPCRECT
typedef const RECT FAR* LPCRECT;
#endif
#ifndef LPCRECTL
typedef const RECTL FAR* LPCRECTL;
#endif
// for OleCreateEmbeddingHelper flags; roles in low word; options in high word
#define EMBDHLP_INPROC_HANDLER 0x0000L // role is handler; implementation is
// default handler; pCF can be NULL
#define EMBDHLP_INPROC_SERVER 0x0001L // role is server; pCF can't be NULL
#define EMBDHLP_CREATENOW 0x00000000L // create using pCF immediately; if pCF
// is NULL, uses std remoting handler
#define EMBDHLP_DELAYCREATE 0x00010000L // delayed create; must supply pCF
// NOTE: OleCreateEmbeddingHelper(clsid, pUnkOuter,
// EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW, NULL, riid, lplpObj)
// is the same as OleCreateDefaultHandler(clsid, pUnkOuter, riid, lplpObj);
// i.e., the embedding helper is the default handler in various roles.
/***** OLE 1.0 OLESTREAM declarations *************************************/
typedef struct _OLESTREAM FAR* LPOLESTREAM;
typedef struct _OLESTREAMVTBL
{
DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
} OLESTREAMVTBL;
typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
typedef struct _OLESTREAM
{
LPOLESTREAMVTBL lpstbl;
} OLESTREAM;
/****** Clipboard Data structures *****************************************/
typedef struct tagOBJECTDESCRIPTOR
{
ULONG cbSize; // Size of structure in bytes
CLSID clsid; // CLSID of data being transferred
DWORD dwDrawAspect; // Display aspect of the object
// normally DVASPECT_CONTENT or ICON.
// dwDrawAspect will be 0 (which is NOT
// DVASPECT_CONTENT) if the copier or
// dragsource didn't draw the object to
// begin with.
SIZEL sizel; // size of the object in HIMETRIC
// sizel is opt.: will be (0,0) for apps
// which don't draw the object being
// transferred
POINTL pointl; // Offset in HIMETRIC units from the
// upper-left corner of the obj where the
// mouse went down for the drag.
// NOTE: y coordinates increase downward.
// x coordinates increase to right
// pointl is opt.; it is only meaningful
// if object is transfered via drag/drop.
// (0, 0) if mouse position is unspecified
// (eg. when obj transfered via clipboard)
DWORD dwStatus; // Misc. status flags for object. Flags are
// defined by OLEMISC enum. these flags
// are as would be returned
// by IOleObject::GetMiscStatus.
DWORD dwFullUserTypeName; // Offset from beginning of structure to
// null-terminated string that specifies
// Full User Type Name of the object.
// 0 indicates string not present.
DWORD dwSrcOfCopy; // Offset from beginning of structure to
// null-terminated string that specifies
// source of the transfer.
// dwSrcOfCOpy is normally implemented as
// the display name of the temp-for-user
// moniker which identifies the source of
// the data.
// 0 indicates string not present.
// NOTE: moniker assignment is NOT forced.
// see IOleObject::GetMoniker(
// OLEGETMONIKER_TEMPFORUSER)
/* variable sized string data may appear here */
} OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, FAR *LPOBJECTDESCRIPTOR,
LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, FAR *LPLINKSRCDESCRIPTOR;
/* verbs */
#define OLEIVERB_PRIMARY (0L)
#define OLEIVERB_SHOW (-1L)
#define OLEIVERB_OPEN (-2L)
#define OLEIVERB_HIDE (-3L)
#define OLEIVERB_UIACTIVATE (-4L)
#define OLEIVERB_INPLACEACTIVATE (-5L)
#define OLEIVERB_DISCARDUNDOSTATE (-6L)
// forward type declarations
#if defined(__cplusplus)
interface IOleClientSite;
interface IOleContainer;
interface IOleObject;
#else
typedef interface IOleClientSite IOleClientSite;
typedef interface IOleContainer IOleContainer;
typedef interface IOleObject IOleObject;
#endif
typedef IOleObject FAR* LPOLEOBJECT;
typedef IOleClientSite FAR* LPOLECLIENTSITE;
typedef IOleContainer FAR* LPOLECONTAINER;
/****** OLE GUIDs *********************************************************/
#ifndef INITGUID
#include "oleguid.h"
#endif
/****** Other Major Interfaces ********************************************/
#include <dvobj.h>
#include <storage.h>
/****** IDrop??? Interfaces ********************************************/
#define MK_ALT 0x0020
#define DROPEFFECT_NONE 0
#define DROPEFFECT_COPY 1
#define DROPEFFECT_MOVE 2
#define DROPEFFECT_LINK 4
#define DROPEFFECT_SCROLL 0x80000000L
// default inset-width of the hot zone, in pixels
// typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET)
#define DD_DEFSCROLLINSET 11
// default delay before scrolling, in milliseconds
// typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY)
#define DD_DEFSCROLLDELAY 50
// default scroll interval, in milliseconds
// typical use: GetProfileInt("windows","DragScrollInterval",
// DD_DEFSCROLLINTERVAL)
#define DD_DEFSCROLLINTERVAL 50
// default delay before dragging should start, in milliseconds
// typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY)
#define DD_DEFDRAGDELAY 200
// default minimum distance (radius) before dragging should start, in pixels
// typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST)
#define DD_DEFDRAGMINDIST 2
/* Dragdrop specific error codes */
#define DRAGDROP_E_NOTREGISTERED (DRAGDROP_E_FIRST)
// trying to revoke a drop target that has not been registered
#define DRAGDROP_E_ALREADYREGISTERED (DRAGDROP_E_FIRST+1)
// this window has already been registered as a drop target
#define DRAGDROP_E_INVALIDHWND (DRAGDROP_E_FIRST+2)
// invalid HWND
#define DRAGDROP_S_DROP (DRAGDROP_S_FIRST + 0)
// successful drop took place
#define DRAGDROP_S_CANCEL (DRAGDROP_S_FIRST + 1)
// drag-drop operation canceled
#define DRAGDROP_S_USEDEFAULTCURSORS (DRAGDROP_S_FIRST + 2)
// use the default cursor
#undef INTERFACE
#define INTERFACE IDropTarget
DECLARE_INTERFACE_(IDropTarget, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IDropTarget methods ***
STDMETHOD(DragEnter) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
STDMETHOD(DragOver) (THIS_ DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
STDMETHOD(DragLeave) (THIS) PURE;
STDMETHOD(Drop) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
};
typedef IDropTarget FAR* LPDROPTARGET;
#undef INTERFACE
#define INTERFACE IDropSource
DECLARE_INTERFACE_(IDropSource, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IDropSource methods ***
STDMETHOD(QueryContinueDrag) (THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE;
STDMETHOD(GiveFeedback) (THIS_ DWORD dwEffect) PURE;
};
typedef IDropSource FAR* LPDROPSOURCE;
/****** IPersist??? Interfaces ********************************************/
#undef INTERFACE
#define INTERFACE IPersist
DECLARE_INTERFACE_(IPersist, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IPersist methods ***
STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
};
typedef IPersist FAR* LPPERSIST;
#undef INTERFACE
#define INTERFACE IPersistStorage
DECLARE_INTERFACE_(IPersistStorage, IPersist)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IPersist methods ***
STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
// *** IPersistStorage methods ***
STDMETHOD(IsDirty) (THIS) PURE;
STDMETHOD(InitNew) (THIS_ LPSTORAGE pStg) PURE;
STDMETHOD(Load) (THIS_ LPSTORAGE pStg) PURE;
STDMETHOD(Save) (THIS_ LPSTORAGE pStgSave, BOOL fSameAsLoad) PURE;
STDMETHOD(SaveCompleted) (THIS_ LPSTORAGE pStgNew) PURE;
STDMETHOD(HandsOffStorage) (THIS) PURE;
};
typedef IPersistStorage FAR* LPPERSISTSTORAGE;
#undef INTERFACE
#define INTERFACE IPersistStream
DECLARE_INTERFACE_(IPersistStream, IPersist)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IPersist methods ***
STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
// *** IPersistStream methods ***
STDMETHOD(IsDirty) (THIS) PURE;
STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
STDMETHOD(Save) (THIS_ LPSTREAM pStm,
BOOL fClearDirty) PURE;
STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR* pcbSize) PURE;
};
typedef IPersistStream FAR* LPPERSISTSTREAM;
#undef INTERFACE
#define INTERFACE IPersistFile
DECLARE_INTERFACE_(IPersistFile, IPersist)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IPersist methods ***
STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
// *** IPersistFile methods ***
STDMETHOD(IsDirty) (THIS) PURE;
STDMETHOD(Load) (THIS_ LPCSTR lpszFileName, DWORD grfMode) PURE;
STDMETHOD(Save) (THIS_ LPCSTR lpszFileName, BOOL fRemember) PURE;
STDMETHOD(SaveCompleted) (THIS_ LPCSTR lpszFileName) PURE;
STDMETHOD(GetCurFile) (THIS_ LPSTR FAR* lplpszFileName) PURE;
};
typedef IPersistFile FAR* LPPERSISTFILE;
/****** Moniker Object Interfaces ******************************************/
#include <moniker.h>
/****** OLE Object Interfaces ******************************************/
#undef INTERFACE
#define INTERFACE IEnumOLEVERB
DECLARE_INTERFACE_(IEnumOLEVERB, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IEnumOLEVERB methods ***
STDMETHOD(Next) (THIS_ ULONG celt, LPOLEVERB rgelt, ULONG FAR* pceltFetched) PURE;
STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
STDMETHOD(Reset) (THIS) PURE;
STDMETHOD(Clone) (THIS_ IEnumOLEVERB FAR* FAR* ppenm) PURE;
};
typedef IEnumOLEVERB FAR* LPENUMOLEVERB;
#undef INTERFACE
#define INTERFACE IOleObject
#define OLEOBJ_E_NOVERBS (OLEOBJ_E_FIRST + 0)
#define OLEOBJ_E_INVALIDVERB (OLEOBJ_E_FIRST + 1)
#define OLEOBJ_S_INVALIDVERB (OLEOBJ_S_FIRST + 0)
#define OLEOBJ_S_CANNOT_DOVERB_NOW (OLEOBJ_S_FIRST + 1)
// verb number is valid but verb cannot be done now, for instance
// hiding a link or hiding a visible OLE 1.0 server
#define OLEOBJ_S_INVALIDHWND (OLEOBJ_S_FIRST + 2)
// invalid hwnd passed
DECLARE_INTERFACE_(IOleObject, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleObject methods ***
STDMETHOD(SetClientSite) (THIS_ LPOLECLIENTSITE pClientSite) PURE;
STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR* ppClientSite) PURE;
STDMETHOD(SetHostNames) (THIS_ LPCSTR szContainerApp, LPCSTR szContainerObj) PURE;
STDMETHOD(Close) (THIS_ DWORD dwSaveOption) PURE;
STDMETHOD(SetMoniker) (THIS_ DWORD dwWhichMoniker, LPMONIKER pmk) PURE;
STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
LPMONIKER FAR* ppmk) PURE;
STDMETHOD(InitFromData) (THIS_ LPDATAOBJECT pDataObject,
BOOL fCreation,
DWORD dwReserved) PURE;
STDMETHOD(GetClipboardData) (THIS_ DWORD dwReserved,
LPDATAOBJECT FAR* ppDataObject) PURE;
STDMETHOD(DoVerb) (THIS_ LONG iVerb,
LPMSG lpmsg,
LPOLECLIENTSITE pActiveSite,
LONG lindex,
HWND hwndParent,
LPCRECT lprcPosRect) PURE;
STDMETHOD(EnumVerbs) (THIS_ LPENUMOLEVERB FAR* ppenumOleVerb) PURE;
STDMETHOD(Update) (THIS) PURE;
STDMETHOD(IsUpToDate) (THIS) PURE;
STDMETHOD(GetUserClassID) (THIS_ CLSID FAR* pClsid) PURE;
STDMETHOD(GetUserType) (THIS_ DWORD dwFormOfType, LPSTR FAR* pszUserType) PURE;
STDMETHOD(SetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
STDMETHOD(EnumAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
STDMETHOD(GetMiscStatus) (THIS_ DWORD dwAspect, DWORD FAR* pdwStatus) PURE;
STDMETHOD(SetColorScheme) (THIS_ LPLOGPALETTE lpLogpal) PURE;
};
typedef IOleObject FAR* LPOLEOBJECT;
#undef INTERFACE
#define INTERFACE IOleClientSite
DECLARE_INTERFACE_(IOleClientSite, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleClientSite methods ***
STDMETHOD(SaveObject) (THIS) PURE;
STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
LPMONIKER FAR* ppmk) PURE;
STDMETHOD(GetContainer) (THIS_ LPOLECONTAINER FAR* ppContainer) PURE;
STDMETHOD(ShowObject) (THIS) PURE;
STDMETHOD(OnShowWindow) (THIS_ BOOL fShow) PURE;
STDMETHOD(RequestNewObjectLayout) (THIS) PURE;
};
typedef IOleClientSite FAR* LPOLECLIENTSITE;
/****** OLE Runnable Object Interface **********************************/
#undef INTERFACE
#define INTERFACE IRunnableObject
DECLARE_INTERFACE_(IRunnableObject, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IRunnableObject methods ***
STDMETHOD(GetRunningClass) (THIS_ LPCLSID lpClsid) PURE;
STDMETHOD(Run) (THIS_ LPBINDCTX pbc) PURE;
STDMETHOD_(BOOL, IsRunning) (THIS) PURE;
STDMETHOD(LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE;
STDMETHOD(SetContainedObject)(THIS_ BOOL fContained) PURE;
};
typedef IRunnableObject FAR* LPRUNNABLEOBJECT;
/****** OLE Container Interfaces ***************************************/
#undef INTERFACE
#define INTERFACE IParseDisplayName
DECLARE_INTERFACE_(IParseDisplayName, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IParseDisplayName method ***
STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
};
typedef IParseDisplayName FAR* LPPARSEDISPLAYNAME;
#undef INTERFACE
#define INTERFACE IOleContainer
DECLARE_INTERFACE_(IOleContainer, IParseDisplayName)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IParseDisplayName method ***
STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
// *** IOleContainer methods ***
STDMETHOD(EnumObjects) ( DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
};
typedef IOleContainer FAR* LPOLECONTAINER;
typedef enum tagBINDSPEED
{
BINDSPEED_INDEFINITE = 1,
BINDSPEED_MODERATE = 2,
BINDSPEED_IMMEDIATE = 3
} BINDSPEED;
typedef enum tagOLECONTF
{
OLECONTF_EMBEDDINGS = 1,
OLECONTF_LINKS = 2,
OLECONTF_OTHERS = 4,
OLECONTF_ONLYUSER = 8,
OLECONTF_ONLYIFRUNNING = 16
} OLECONTF;
#undef INTERFACE
#define INTERFACE IOleItemContainer
DECLARE_INTERFACE_(IOleItemContainer, IOleContainer)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IParseDisplayName method ***
STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
// *** IOleContainer methods ***
STDMETHOD(EnumObjects) (THIS_ DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
// *** IOleItemContainer methods ***
STDMETHOD(GetObject) (THIS_ LPSTR lpszItem, DWORD dwSpeedNeeded,
LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvObject) PURE;
STDMETHOD(GetObjectStorage) (THIS_ LPSTR lpszItem, LPBINDCTX pbc,
REFIID riid, LPVOID FAR* ppvStorage) PURE;
STDMETHOD(IsRunning) (THIS_ LPSTR lpszItem) PURE;
};
typedef IOleItemContainer FAR* LPOLEITEMCONTAINER;
/****** OLE Advise Holder Interface ***************************************/
#undef INTERFACE
#define INTERFACE IOleAdviseHolder
DECLARE_INTERFACE_(IOleAdviseHolder, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleAdviseHolder methods ***
STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
STDMETHOD(SendOnRename)(THIS_ LPMONIKER pmk) PURE;
STDMETHOD(SendOnSave)(THIS) PURE;
STDMETHOD(SendOnClose)(THIS) PURE;
};
typedef IOleAdviseHolder FAR* LPOLEADVISEHOLDER;
/****** OLE Link Interface ************************************************/
/* Link update options */
typedef enum tagOLEUPDATE
{
OLEUPDATE_ALWAYS=1,
OLEUPDATE_ONCALL=3
} OLEUPDATE;
typedef OLEUPDATE FAR* LPOLEUPDATE;
// for IOleLink::BindToSource
typedef enum tagOLELINKBIND
{
OLELINKBIND_EVENIFCLASSDIFF = 1,
} OLELINKBIND;
#undef INTERFACE
#define INTERFACE IOleLink
DECLARE_INTERFACE_(IOleLink, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleLink methods ***
STDMETHOD(SetUpdateOptions) (THIS_ DWORD dwUpdateOpt) PURE;
STDMETHOD(GetUpdateOptions) (THIS_ LPDWORD pdwUpdateOpt) PURE;
STDMETHOD(SetSourceMoniker) (THIS_ LPMONIKER pmk, REFCLSID rclsid) PURE;
STDMETHOD(GetSourceMoniker) (THIS_ LPMONIKER FAR* ppmk) PURE;
STDMETHOD(SetSourceDisplayName) (THIS_ LPCSTR lpszDisplayName) PURE;
STDMETHOD(GetSourceDisplayName) (THIS_ LPSTR FAR* lplpszDisplayName) PURE;
STDMETHOD(BindToSource) (THIS_ DWORD bindflags, LPBINDCTX pbc) PURE;
STDMETHOD(BindIfRunning) (THIS) PURE;
STDMETHOD(GetBoundSource) (THIS_ LPUNKNOWN FAR* ppUnk) PURE;
STDMETHOD(UnbindSource) (THIS) PURE;
STDMETHOD(Update) (THIS_ LPBINDCTX pbc) PURE;
};
typedef IOleLink FAR* LPOLELINK;
/****** OLE InPlace Editing Interfaces ************************************/
#ifdef _MAC
typedef Handle HOLEMENU;
typedef long SIZE;
typedef long HACCEL;
#else
DECLARE_HANDLE(HOLEMENU);
#endif
typedef struct FARSTRUCT tagOIFI // OleInPlaceFrameInfo
{
UINT cb;
BOOL fMDIApp;
HWND hwndFrame;
HACCEL haccel;
int cAccelEntries;
} OLEINPLACEFRAMEINFO, FAR* LPOLEINPLACEFRAMEINFO;
typedef struct FARSTRUCT tagOleMenuGroupWidths
{
LONG width[6];
} OLEMENUGROUPWIDTHS, FAR* LPOLEMENUGROUPWIDTHS;
typedef RECT BORDERWIDTHS;
typedef LPRECT LPBORDERWIDTHS;
typedef LPCRECT LPCBORDERWIDTHS;
/* Inplace editing specific error codes */
#define INPLACE_E_NOTUNDOABLE (INPLACE_E_FIRST)
// undo is not avaiable
#define INPLACE_E_NOTOOLSPACE (INPLACE_E_FIRST+1)
// Space for tools is not available
#define INPLACE_S_TRUNCATED (INPLACE_S_FIRST)
// Message is too long, some of it had to be truncated before displaying
//misc definitions
#define INPLACE_DEFBORDERWIDTH 4
// forward type declarations
#if defined(__cplusplus)
interface IOleInPlaceUIWindow;
#else
typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
#endif
typedef IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
#undef INTERFACE
#define INTERFACE IOleWindow
DECLARE_INTERFACE_(IOleWindow, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
};
typedef IOleWindow FAR* LPOLEWINDOW;
#undef INTERFACE
#define INTERFACE IOleInPlaceObject
DECLARE_INTERFACE_(IOleInPlaceObject, IOleWindow)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
// *** IOleInPlaceObject methods ***
STDMETHOD(InPlaceDeactivate) (THIS) PURE;
STDMETHOD(UIDeactivate) (THIS) PURE;
STDMETHOD(SetObjectRects) (THIS_ LPCRECT lprcPosRect,
LPCRECT lprcClipRect) PURE;
STDMETHOD(ReactivateAndUndo) (THIS) PURE;
};
typedef IOleInPlaceObject FAR* LPOLEINPLACEOBJECT;
#undef INTERFACE
#define INTERFACE IOleInPlaceActiveObject
DECLARE_INTERFACE_(IOleInPlaceActiveObject, IOleWindow)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
// *** IOleInPlaceActiveObject methods ***
STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE;
STDMETHOD(OnFrameWindowActivate) (THIS_ BOOL fActivate) PURE;
STDMETHOD(OnDocWindowActivate) (THIS_ BOOL fActivate) PURE;
STDMETHOD(ResizeBorder) (THIS_ LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow) PURE;
STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
};
typedef IOleInPlaceActiveObject FAR* LPOLEINPLACEACTIVEOBJECT;
#undef INTERFACE
#define INTERFACE IOleInPlaceUIWindow
DECLARE_INTERFACE_(IOleInPlaceUIWindow, IOleWindow)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
// *** IOleInPlaceUIWindow methods ***
STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
LPCSTR lpszObjName) PURE;
};
typedef IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
#undef INTERFACE
#define INTERFACE IOleInPlaceFrame
DECLARE_INTERFACE_(IOleInPlaceFrame, IOleInPlaceUIWindow)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
// *** IOleInPlaceUIWindow methods ***
STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
LPCSTR lpszObjName) PURE;
// *** IOleInPlaceFrame methods ***
STDMETHOD(InsertMenus) (THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE;
STDMETHOD(SetMenu) (THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE;
STDMETHOD(RemoveMenus) (THIS_ HMENU hmenuShared) PURE;
STDMETHOD(SetStatusText) (THIS_ LPCSTR lpszStatusText) PURE;
STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg, WORD wID) PURE;
};
typedef IOleInPlaceFrame FAR* LPOLEINPLACEFRAME;
#undef INTERFACE
#define INTERFACE IOleInPlaceSite
DECLARE_INTERFACE_(IOleInPlaceSite, IOleWindow)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IOleWindow methods ***
STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
// *** IOleInPlaceSite methods ***
STDMETHOD(CanInPlaceActivate) (THIS) PURE;
STDMETHOD(OnInPlaceActivate) (THIS) PURE;
STDMETHOD(OnUIActivate) (THIS) PURE;
STDMETHOD(GetWindowContext) (THIS_ LPOLEINPLACEFRAME FAR* lplpFrame,
LPOLEINPLACEUIWINDOW FAR* lplpDoc,
LPRECT lprcPosRect,
LPRECT lprcClipRect,
LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
STDMETHOD(Scroll) (THIS_ SIZE scrollExtent) PURE;
STDMETHOD(OnUIDeactivate) (THIS_ BOOL fUndoable) PURE;
STDMETHOD(OnInPlaceDeactivate) (THIS) PURE;
STDMETHOD(DiscardUndoState) (THIS) PURE;
STDMETHOD(DeactivateAndUndo) (THIS) PURE;
STDMETHOD(OnPosRectChange) (THIS_ LPCRECT lprcPosRect) PURE;
};
typedef IOleInPlaceSite FAR* LPOLEINPLACESITE;
/****** OLE API Prototypes ************************************************/
STDAPI_(DWORD) OleBuildVersion( VOID );
/* helper functions */
STDAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
STDAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
STDAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
STDAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
STDAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPSTR lpszUserType);
STDAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPSTR FAR* lplpszUserType);
/* init/term */
STDAPI OleInitialize(LPMALLOC pMalloc);
STDAPI_(void) OleUninitialize(void);
/* APIs to query whether (Embedded/Linked) object can be created from
the data object */
STDAPI OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
STDAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
/* Object creation APIs */
STDAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
LPSTORAGE pStg, LPVOID FAR* ppvObj);
STDAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
STDAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
STDAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
STDAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
STDAPI OleCreateLinkToFile(LPCSTR lpszFileName, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
STDAPI OleCreateFromFile(REFCLSID rclsid, LPCSTR lpszFileName, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
STDAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
LPVOID FAR* ppvObj);
STDAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
STDAPI OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
STDAPI OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
STDAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
STDAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
/* Drag/Drop APIs */
STDAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
STDAPI RevokeDragDrop(HWND hwnd);
STDAPI DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
DWORD dwOKEffects, LPDWORD pdwEffect);
/* Clipboard APIs */
STDAPI OleSetClipboard(LPDATAOBJECT pDataObj);
STDAPI OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
STDAPI OleFlushClipboard(void);
STDAPI OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
/* InPlace Editing APIs */
STDAPI_(HOLEMENU) OleCreateMenuDescriptor (HMENU hmenuCombined,
LPOLEMENUGROUPWIDTHS lpMenuWidths);
STDAPI OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
HWND hwndActiveObject,
LPOLEINPLACEFRAME lpFrame,
LPOLEINPLACEACTIVEOBJECT lpActiveObj);
STDAPI OleDestroyMenuDescriptor (HOLEMENU holemenu);
STDAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
/* Helper APIs */
STDAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
UINT uiFlags);
STDAPI OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
LPCRECT lprcBounds);
STDAPI OleRun(LPUNKNOWN pUnknown);
STDAPI_(BOOL) OleIsRunning(LPOLEOBJECT pObject);
STDAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
STDAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
STDAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
STDAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
REFIID riid, LPVOID FAR* lplpObj);
STDAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
DWORD flags, LPCLASSFACTORY pCF,
REFIID riid, LPVOID FAR* lplpObj);
STDAPI_(BOOL) IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
WORD FAR* lpwCmd);
/* Icon extraction Helper APIs */
STDAPI_(HGLOBAL) OleGetIconOfFile(LPSTR lpszPath, BOOL fUseFileAsLabel);
STDAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid, LPSTR lpszLabel,
BOOL fUseTypeAsLabel);
STDAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPSTR lpszLabel,
LPSTR lpszSourceFile, UINT iIconIndex);
/* Registration Database Helper APIs */
STDAPI OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
LPSTR FAR* pszUserType);
STDAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect,
DWORD FAR* pdwStatus);
STDAPI OleRegEnumFormatEtc (REFCLSID clsid, DWORD dwDirection,
LPENUMFORMATETC FAR* ppenum);
STDAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
/* OLE 1.0 conversion APIS */
STDAPI OleConvertIStorageToOLESTREAM
(LPSTORAGE pstg,
LPOLESTREAM polestm);
STDAPI OleConvertOLESTREAMToIStorage
(LPOLESTREAM polestm,
LPSTORAGE pstg,
const DVTARGETDEVICE FAR* ptd);
STDAPI OleConvertIStorageToOLESTREAMEx
(LPSTORAGE pstg,
// Presentation data to OLESTREAM
CLIPFORMAT cfFormat, // format
LONG lWidth, // width
LONG lHeight, // height
DWORD dwSize, // size in bytes
LPSTGMEDIUM pmedium, // bits
LPOLESTREAM polestm);
STDAPI OleConvertOLESTREAMToIStorageEx
(LPOLESTREAM polestm,
LPSTORAGE pstg,
// Presentation data from OLESTREAM
CLIPFORMAT FAR* pcfFormat, // format
LONG FAR* plwWidth, // width
LONG FAR* plHeight, // height
DWORD FAR* pdwSize, // size in bytes
LPSTGMEDIUM pmedium); // bits
/* Storage Utility APIs */
STDAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
STDAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
LPLOCKBYTES FAR* pplkbyt);
STDAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
STDAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
LPSTREAM FAR* ppstm);
/* ConvertTo APIS */
STDAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
STDAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
STDAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
STDAPI GetConvertStg(LPSTORAGE pStg);
STDAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
#endif // _OLE2_H_
#else /* !__FLAT__ */
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: OLE2.h
// Contents: Main OLE2 header; Defines Linking and Emmebbeding interfaces, and API's.
// Also includes .h files for the compobj, and oleauto subcomponents.
//
//----------------------------------------------------------------------------
#if !defined( _OLE2_H_ )
#define _OLE2_H_
// Set packing to 8
#include <pshpack8.h>
// Make 100% sure WIN32 is defined
#ifndef WIN32
#define WIN32 100 // 100 == NT version 1.0
#endif
// SET to remove _export from interface definitions
#include <winerror.h>
#include <objbase.h>
#include <oleauto.h>
// View OBJECT Error Codes
#define E_DRAW VIEW_E_DRAW
// IDataObject Error Codes
#define DATA_E_FORMATETC DV_E_FORMATETC
// Common stuff gleamed from OLE.2,
/* verbs */
#define OLEIVERB_PRIMARY (0L)
#define OLEIVERB_SHOW (-1L)
#define OLEIVERB_OPEN (-2L)
#define OLEIVERB_HIDE (-3L)
#define OLEIVERB_UIACTIVATE (-4L)
#define OLEIVERB_INPLACEACTIVATE (-5L)
#define OLEIVERB_DISCARDUNDOSTATE (-6L)
// for OleCreateEmbeddingHelper flags; roles in low word; options in high word
#define EMBDHLP_INPROC_HANDLER 0x0000L
#define EMBDHLP_INPROC_SERVER 0x0001L
#define EMBDHLP_CREATENOW 0x00000000L
#define EMBDHLP_DELAYCREATE 0x00010000L
/* pull in the MIDL generated header */
#include <oleidl.h>
/****** DV APIs ***********************************************************/
WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder);
/****** OLE API Prototypes ************************************************/
WINOLEAPI_(DWORD) OleBuildVersion( VOID );
/* helper functions */
WINOLEAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
WINOLEAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
WINOLEAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
WINOLEAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
WINOLEAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
WINOLEAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType);
/* init/term */
WINOLEAPI OleInitialize(LPVOID pvReserved);
WINOLEAPI_(void) OleUninitialize(void);
/* APIs to query whether (Embedded/Linked) object can be created from
the data object */
WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
/* Object creation APIs */
WINOLEAPI OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
LPSTORAGE pStg, LPVOID FAR* ppvObj);
WINOLEAPI OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
DWORD renderopt, LPFORMATETC pFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
LPVOID FAR* ppvObj);
WINOLEAPI OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
WINOLEAPI OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
WINOLEAPI OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid,
DWORD renderopt, LPFORMATETC lpFormatEtc,
LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
WINOLEAPI OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
LPVOID FAR* ppvObj);
WINOLEAPI OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
WINOLEAPI OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
WINOLEAPI OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
WINOLEAPI OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
WINOLEAPI OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
/* Drag/Drop APIs */
WINOLEAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
WINOLEAPI RevokeDragDrop(HWND hwnd);
WINOLEAPI DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
DWORD dwOKEffects, LPDWORD pdwEffect);
/* Clipboard APIs */
WINOLEAPI OleSetClipboard(LPDATAOBJECT pDataObj);
WINOLEAPI OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
WINOLEAPI OleFlushClipboard(void);
WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
/* InPlace Editing APIs */
WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor (HMENU hmenuCombined,
LPOLEMENUGROUPWIDTHS lpMenuWidths);
WINOLEAPI OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
HWND hwndActiveObject,
LPOLEINPLACEFRAME lpFrame,
LPOLEINPLACEACTIVEOBJECT lpActiveObj);
WINOLEAPI OleDestroyMenuDescriptor (HOLEMENU holemenu);
WINOLEAPI OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
/* Helper APIs */
WINOLEAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
UINT uiFlags);
WINOLEAPI OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
LPCRECT lprcBounds);
WINOLEAPI OleRun(LPUNKNOWN pUnknown);
WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT pObject);
WINOLEAPI OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
WINOLEAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
REFIID riid, LPVOID FAR* lplpObj);
WINOLEAPI OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
DWORD flags, LPCLASSFACTORY pCF,
REFIID riid, LPVOID FAR* lplpObj);
WINOLEAPI_(BOOL) IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
WORD FAR* lpwCmd);
/* Icon extraction Helper APIs */
WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel);
WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel,
BOOL fUseTypeAsLabel);
WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel,
LPOLESTR lpszSourceFile, UINT iIconIndex);
/* Registration Database Helper APIs */
WINOLEAPI OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
LPOLESTR FAR* pszUserType);
WINOLEAPI OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect,
DWORD FAR* pdwStatus);
WINOLEAPI OleRegEnumFormatEtc (REFCLSID clsid, DWORD dwDirection,
LPENUMFORMATETC FAR* ppenum);
WINOLEAPI OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
/* OLE 1.0 conversion APIS */
/***** OLE 1.0 OLESTREAM declarations *************************************/
typedef struct _OLESTREAM FAR* LPOLESTREAM;
typedef struct _OLESTREAMVTBL
{
DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
} OLESTREAMVTBL;
typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
typedef struct _OLESTREAM
{
LPOLESTREAMVTBL lpstbl;
} OLESTREAM;
WINOLEAPI OleConvertOLESTREAMToIStorage
(LPOLESTREAM lpolestream,
LPSTORAGE pstg,
const DVTARGETDEVICE FAR* ptd);
WINOLEAPI OleConvertIStorageToOLESTREAM
(LPSTORAGE pstg,
LPOLESTREAM lpolestream);
/* Storage Utility APIs */
WINOLEAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
WINOLEAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
LPLOCKBYTES FAR* pplkbyt);
WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
LPSTREAM FAR* ppstm);
/* ConvertTo APIS */
WINOLEAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
WINOLEAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
WINOLEAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
WINOLEAPI GetConvertStg(LPSTORAGE pStg);
WINOLEAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
WINOLEAPI OleConvertIStorageToOLESTREAMEx
(LPSTORAGE pstg,
// Presentation data to OLESTREAM
CLIPFORMAT cfFormat, // format
LONG lWidth, // width
LONG lHeight, // height
DWORD dwSize, // size in bytes
LPSTGMEDIUM pmedium, // bits
LPOLESTREAM polestm);
WINOLEAPI OleConvertOLESTREAMToIStorageEx
(LPOLESTREAM polestm,
LPSTORAGE pstg,
// Presentation data from OLESTREAM
CLIPFORMAT FAR* pcfFormat, // format
LONG FAR* plwWidth, // width
LONG FAR* plHeight, // height
DWORD FAR* pdwSize, // size in bytes
LPSTGMEDIUM pmedium); // bits
#ifndef RC_INVOKED
#include <poppack.h>
#endif // RC_INVOKED
#endif // __OLE2_H__
#endif /* __FLAT__ */