431 lines
15 KiB
C
431 lines
15 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992-1999.
|
|
//
|
|
// 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_ )
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#define _OLE2_H_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifndef _MAC
|
|
// Set packing to 8
|
|
#include <pshpack8.h>
|
|
|
|
// Make 100% sure WIN32 is defined
|
|
#ifndef WIN32
|
|
#define WIN32 100 // 100 == NT version 1.0
|
|
#endif
|
|
#else //_MAC
|
|
#ifdef _WIN32
|
|
#include "macname1.h"
|
|
#endif // _WIN32
|
|
#endif //_MAC
|
|
|
|
|
|
|
|
// SET to remove _export from interface definitions
|
|
|
|
|
|
#include <winerror.h>
|
|
|
|
#ifdef _MAC
|
|
#if !defined(__MACPUB__)
|
|
#include <macpub.h>
|
|
#endif
|
|
#endif //_MAC
|
|
|
|
#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
|
|
|
|
|
|
#ifdef _MAC
|
|
/****** Standard Object Definitions *****************************************/
|
|
|
|
//#ifndef __COMPOBJ__
|
|
//#include <compobj.h>
|
|
//#endif
|
|
|
|
|
|
|
|
typedef enum {
|
|
OLE_E_NOEXTENSION = OLE_E_NOSTORAGE +1, // no extension at startup
|
|
OLE_E_VERSEXTENSION, // extension has wrong version #
|
|
OLE_E_IPBUSY, // cannot get inplace resource
|
|
OLE_E_NOT_FRONT_PROCESS, // inplace container unexpectedly in background
|
|
OLE_E_WRONG_MENU, // holemenu != prev holemenu
|
|
OLE_E_MENU_NOT_PATCHED, // menubar is not hashed
|
|
OLE_E_MENUID_NOT_HASHED, // id was never hashed
|
|
OLE_E_foo
|
|
} inplace_errors;
|
|
|
|
|
|
// DoDragDropMac()
|
|
typedef struct tagDRAG_FLAVORINFO {
|
|
unsigned long cfFormat;
|
|
unsigned long FlavorFlags; // Flavor Flags as specified by the DragManager
|
|
OLEBOOL fAddData; // If true, the data is added with the flavor
|
|
long reserved; // must be NULL
|
|
} DRAG_FLAVORINFO;
|
|
|
|
#endif //_MAC
|
|
|
|
|
|
// 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
|
|
|
|
/* extended create function flags */
|
|
#define OLECREATE_LEAVERUNNING 0x00000001
|
|
|
|
/* pull in the MIDL generated header */
|
|
|
|
#include <oleidl.h>
|
|
|
|
|
|
#ifdef _MAC
|
|
typedef struct tagOleMBarRec
|
|
{
|
|
long reserved;
|
|
} OleMBarRec, *OleMBarPtr, **OleMBarHandle;
|
|
|
|
#define noAxis 3 // indicates no grow or size in any direction
|
|
// see mac #defines noConstraint, hAxisOnly, vAxisOnly
|
|
|
|
#endif //_MAC
|
|
|
|
|
|
|
|
/****** DV APIs ***********************************************************/
|
|
|
|
|
|
WINOLEAPI CreateDataAdviseHolder(OUT LPDATAADVISEHOLDER FAR* ppDAHolder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****** OLE API Prototypes ************************************************/
|
|
|
|
WINOLEAPI_(DWORD) OleBuildVersion( VOID );
|
|
|
|
/* helper functions */
|
|
WINOLEAPI ReadClassStg(IN LPSTORAGE pStg, OUT CLSID FAR* pclsid);
|
|
WINOLEAPI WriteClassStg(IN LPSTORAGE pStg, IN REFCLSID rclsid);
|
|
WINOLEAPI ReadClassStm(IN LPSTREAM pStm, OUT CLSID FAR* pclsid);
|
|
WINOLEAPI WriteClassStm(IN LPSTREAM pStm, IN REFCLSID rclsid);
|
|
WINOLEAPI WriteFmtUserTypeStg (IN LPSTORAGE pstg, IN CLIPFORMAT cf, IN LPOLESTR lpszUserType);
|
|
WINOLEAPI ReadFmtUserTypeStg (IN LPSTORAGE pstg, OUT CLIPFORMAT FAR* pcf, OUT LPOLESTR FAR* lplpszUserType);
|
|
|
|
|
|
/* init/term */
|
|
|
|
WINOLEAPI OleInitialize(IN LPVOID pvReserved);
|
|
WINOLEAPI_(void) OleUninitialize(void);
|
|
|
|
|
|
/* APIs to query whether (Embedded/Linked) object can be created from
|
|
the data object */
|
|
|
|
WINOLEAPI OleQueryLinkFromData(IN LPDATAOBJECT pSrcDataObject);
|
|
WINOLEAPI OleQueryCreateFromData(IN LPDATAOBJECT pSrcDataObject);
|
|
|
|
|
|
/* Object creation APIs */
|
|
|
|
WINOLEAPI OleCreate(IN REFCLSID rclsid, IN REFIID riid, IN DWORD renderopt,
|
|
IN LPFORMATETC pFormatEtc, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateEx(IN REFCLSID rclsid, IN REFIID riid, IN DWORD dwFlags,
|
|
IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateFromData(IN LPDATAOBJECT pSrcDataObj, IN REFIID riid,
|
|
IN DWORD renderopt, IN LPFORMATETC pFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg,
|
|
OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateFromDataEx(IN LPDATAOBJECT pSrcDataObj, IN REFIID riid,
|
|
IN DWORD dwFlags, IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateLinkFromData(IN LPDATAOBJECT pSrcDataObj, IN REFIID riid,
|
|
IN DWORD renderopt, IN LPFORMATETC pFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg,
|
|
OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateLinkFromDataEx(IN LPDATAOBJECT pSrcDataObj, IN REFIID riid,
|
|
IN DWORD dwFlags, IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT IN DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateStaticFromData(IN LPDATAOBJECT pSrcDataObj, IN REFIID iid,
|
|
IN DWORD renderopt, IN LPFORMATETC pFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg,
|
|
OUT LPVOID FAR* ppvObj);
|
|
|
|
|
|
WINOLEAPI OleCreateLink(IN LPMONIKER pmkLinkSrc, IN REFIID riid,
|
|
IN DWORD renderopt, IN LPFORMATETC lpFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateLinkEx(IN LPMONIKER pmkLinkSrc, IN REFIID riid,
|
|
IN DWORD dwFlags, IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateLinkToFile(IN LPCOLESTR lpszFileName, IN REFIID riid,
|
|
IN DWORD renderopt, IN LPFORMATETC lpFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateLinkToFileEx(IN LPCOLESTR lpszFileName, IN REFIID riid,
|
|
IN DWORD dwFlags, IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateFromFile(IN REFCLSID rclsid, IN LPCOLESTR lpszFileName, IN REFIID riid,
|
|
IN DWORD renderopt, IN LPFORMATETC lpFormatEtc,
|
|
IN LPOLECLIENTSITE pClientSite, IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleCreateFromFileEx(IN REFCLSID rclsid, IN LPCOLESTR lpszFileName, IN REFIID riid,
|
|
IN DWORD dwFlags, IN DWORD renderopt, IN ULONG cFormats, IN DWORD* rgAdvf,
|
|
IN LPFORMATETC rgFormatEtc, IN IAdviseSink FAR* lpAdviseSink,
|
|
OUT DWORD FAR* rgdwConnection, IN LPOLECLIENTSITE pClientSite,
|
|
IN LPSTORAGE pStg, OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleLoad(IN LPSTORAGE pStg, IN REFIID riid, IN LPOLECLIENTSITE pClientSite,
|
|
OUT LPVOID FAR* ppvObj);
|
|
|
|
WINOLEAPI OleSave(IN LPPERSISTSTORAGE pPS, IN LPSTORAGE pStg, IN BOOL fSameAsLoad);
|
|
|
|
WINOLEAPI OleLoadFromStream( IN LPSTREAM pStm, IN REFIID iidInterface, OUT LPVOID FAR* ppvObj);
|
|
WINOLEAPI OleSaveToStream( IN LPPERSISTSTREAM pPStm, IN LPSTREAM pStm );
|
|
|
|
|
|
WINOLEAPI OleSetContainedObject(IN LPUNKNOWN pUnknown, IN BOOL fContained);
|
|
WINOLEAPI OleNoteObjectVisible(IN LPUNKNOWN pUnknown, IN BOOL fVisible);
|
|
|
|
|
|
/* Drag/Drop APIs */
|
|
|
|
WINOLEAPI RegisterDragDrop(IN HWND hwnd, IN LPDROPTARGET pDropTarget);
|
|
WINOLEAPI RevokeDragDrop(IN HWND hwnd);
|
|
WINOLEAPI DoDragDrop(IN LPDATAOBJECT pDataObj, IN LPDROPSOURCE pDropSource,
|
|
IN DWORD dwOKEffects, OUT LPDWORD pdwEffect);
|
|
|
|
/* Clipboard APIs */
|
|
|
|
WINOLEAPI OleSetClipboard(IN LPDATAOBJECT pDataObj);
|
|
WINOLEAPI OleGetClipboard(OUT LPDATAOBJECT FAR* ppDataObj);
|
|
WINOLEAPI OleFlushClipboard(void);
|
|
WINOLEAPI OleIsCurrentClipboard(IN LPDATAOBJECT pDataObj);
|
|
|
|
|
|
/* InPlace Editing APIs */
|
|
|
|
WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor (IN HMENU hmenuCombined,
|
|
IN LPOLEMENUGROUPWIDTHS lpMenuWidths);
|
|
WINOLEAPI OleSetMenuDescriptor (IN HOLEMENU holemenu, IN HWND hwndFrame,
|
|
IN HWND hwndActiveObject,
|
|
IN LPOLEINPLACEFRAME lpFrame,
|
|
IN LPOLEINPLACEACTIVEOBJECT lpActiveObj);
|
|
WINOLEAPI OleDestroyMenuDescriptor (IN HOLEMENU holemenu);
|
|
|
|
WINOLEAPI OleTranslateAccelerator (IN LPOLEINPLACEFRAME lpFrame,
|
|
IN LPOLEINPLACEFRAMEINFO lpFrameInfo, IN LPMSG lpmsg);
|
|
|
|
|
|
/* Helper APIs */
|
|
WINOLEAPI_(HANDLE) OleDuplicateData (IN HANDLE hSrc, IN CLIPFORMAT cfFormat,
|
|
IN UINT uiFlags);
|
|
|
|
WINOLEAPI OleDraw (IN LPUNKNOWN pUnknown, IN DWORD dwAspect, IN HDC hdcDraw,
|
|
IN LPCRECT lprcBounds);
|
|
|
|
WINOLEAPI OleRun(IN LPUNKNOWN pUnknown);
|
|
WINOLEAPI_(BOOL) OleIsRunning(IN LPOLEOBJECT pObject);
|
|
WINOLEAPI OleLockRunning(IN LPUNKNOWN pUnknown, IN BOOL fLock, IN BOOL fLastUnlockCloses);
|
|
WINOLEAPI_(void) ReleaseStgMedium(IN LPSTGMEDIUM);
|
|
WINOLEAPI CreateOleAdviseHolder(OUT LPOLEADVISEHOLDER FAR* ppOAHolder);
|
|
|
|
WINOLEAPI OleCreateDefaultHandler(IN REFCLSID clsid, IN LPUNKNOWN pUnkOuter,
|
|
IN REFIID riid, OUT LPVOID FAR* lplpObj);
|
|
|
|
WINOLEAPI OleCreateEmbeddingHelper(IN REFCLSID clsid, IN LPUNKNOWN pUnkOuter,
|
|
IN DWORD flags, IN LPCLASSFACTORY pCF,
|
|
IN REFIID riid, OUT LPVOID FAR* lplpObj);
|
|
|
|
WINOLEAPI_(BOOL) IsAccelerator(IN HACCEL hAccel, IN int cAccelEntries, IN LPMSG lpMsg,
|
|
OUT WORD FAR* lpwCmd);
|
|
/* Icon extraction Helper APIs */
|
|
|
|
WINOLEAPI_(HGLOBAL) OleGetIconOfFile(IN LPOLESTR lpszPath, IN BOOL fUseFileAsLabel);
|
|
|
|
WINOLEAPI_(HGLOBAL) OleGetIconOfClass(IN REFCLSID rclsid, IN LPOLESTR lpszLabel,
|
|
IN BOOL fUseTypeAsLabel);
|
|
|
|
WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(IN HICON hIcon, IN LPOLESTR lpszLabel,
|
|
IN LPOLESTR lpszSourceFile, IN UINT iIconIndex);
|
|
|
|
|
|
|
|
/* Registration Database Helper APIs */
|
|
|
|
WINOLEAPI OleRegGetUserType (IN REFCLSID clsid, IN DWORD dwFormOfType,
|
|
OUT LPOLESTR FAR* pszUserType);
|
|
|
|
WINOLEAPI OleRegGetMiscStatus (IN REFCLSID clsid, IN DWORD dwAspect,
|
|
OUT DWORD FAR* pdwStatus);
|
|
|
|
WINOLEAPI OleRegEnumFormatEtc (IN REFCLSID clsid, IN DWORD dwDirection,
|
|
OUT LPENUMFORMATETC FAR* ppenum);
|
|
|
|
WINOLEAPI OleRegEnumVerbs (IN REFCLSID clsid, OUT LPENUMOLEVERB FAR* ppenum);
|
|
|
|
#ifdef _MAC
|
|
/* WlmOLE helper APIs */
|
|
|
|
WINOLEAPI WlmOleCheckoutMacInterface(LPUNKNOWN pUnk, LPVOID* ppv);
|
|
WINOLEAPI WlmOleCheckinMacInterface(LPUNKNOWN pUnk);
|
|
WINOLEAPI WlmOleWrapMacInterface(LPUNKNOWN pUnk, REFIID riid, LPVOID* ppv);
|
|
WINOLEAPI WlmOleUnwrapMacInterface(LPVOID pv);
|
|
|
|
WINOLEAPI WlmOleCheckoutWinInterface(LPVOID pUnk, LPUNKNOWN* ppv);
|
|
WINOLEAPI WlmOleCheckinWinInterface(LPVOID pUnk);
|
|
WINOLEAPI WlmOleWrapWinInterface(LPVOID pUnk, REFIID riid, LPUNKNOWN* ppv);
|
|
WINOLEAPI WlmOleUnwrapWinInterface(LPVOID pv);
|
|
|
|
WINOLEAPI_(void) WlmOleVersion(void);
|
|
WINOLEAPI_(void) WlmOleSetInPlaceWindow(HWND hwnd);
|
|
|
|
typedef HRESULT (STDAPICALLTYPE* OLEWRAPPROC) (REFIID riid, LPVOID* ppvWin, LPVOID* ppvMac);
|
|
WINOLEAPI WlmOleRegisterUserWrap(OLEWRAPPROC procNew, OLEWRAPPROC* pprocOld);
|
|
#endif
|
|
|
|
|
|
/* 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
|
|
(IN LPOLESTREAM lpolestream,
|
|
OUT LPSTORAGE pstg,
|
|
IN const DVTARGETDEVICE FAR* ptd);
|
|
|
|
WINOLEAPI OleConvertIStorageToOLESTREAM
|
|
(IN LPSTORAGE pstg,
|
|
OUT LPOLESTREAM lpolestream);
|
|
|
|
|
|
/* Storage Utility APIs */
|
|
WINOLEAPI GetHGlobalFromILockBytes (IN LPLOCKBYTES plkbyt, OUT HGLOBAL FAR* phglobal);
|
|
WINOLEAPI CreateILockBytesOnHGlobal (IN HGLOBAL hGlobal, IN BOOL fDeleteOnRelease,
|
|
OUT LPLOCKBYTES FAR* pplkbyt);
|
|
|
|
WINOLEAPI GetHGlobalFromStream (IN LPSTREAM pstm, OUT HGLOBAL FAR* phglobal);
|
|
WINOLEAPI CreateStreamOnHGlobal (IN HGLOBAL hGlobal, IN BOOL fDeleteOnRelease,
|
|
OUT LPSTREAM FAR* ppstm);
|
|
|
|
|
|
/* ConvertTo APIS */
|
|
|
|
WINOLEAPI OleDoAutoConvert(IN LPSTORAGE pStg, OUT LPCLSID pClsidNew);
|
|
WINOLEAPI OleGetAutoConvert(IN REFCLSID clsidOld, OUT LPCLSID pClsidNew);
|
|
WINOLEAPI OleSetAutoConvert(IN REFCLSID clsidOld, IN REFCLSID clsidNew);
|
|
WINOLEAPI GetConvertStg(IN LPSTORAGE pStg);
|
|
WINOLEAPI SetConvertStg(IN LPSTORAGE pStg, IN BOOL fConvert);
|
|
|
|
|
|
WINOLEAPI OleConvertIStorageToOLESTREAMEx
|
|
(IN LPSTORAGE pstg,
|
|
// Presentation data to OLESTREAM
|
|
IN CLIPFORMAT cfFormat, // format
|
|
IN LONG lWidth, // width
|
|
IN LONG lHeight, // height
|
|
IN DWORD dwSize, // size in bytes
|
|
IN LPSTGMEDIUM pmedium, // bits
|
|
OUT LPOLESTREAM polestm);
|
|
|
|
WINOLEAPI OleConvertOLESTREAMToIStorageEx
|
|
(IN LPOLESTREAM polestm,
|
|
OUT LPSTORAGE pstg,
|
|
// Presentation data from OLESTREAM
|
|
OUT CLIPFORMAT FAR* pcfFormat, // format
|
|
OUT LONG FAR* plwWidth, // width
|
|
OUT LONG FAR* plHeight, // height
|
|
OUT DWORD FAR* pdwSize, // size in bytes
|
|
OUT LPSTGMEDIUM pmedium); // bits
|
|
|
|
#ifndef _MAC
|
|
#ifndef RC_INVOKED
|
|
#include <poppack.h>
|
|
#endif // RC_INVOKED
|
|
|
|
#else // _MAC
|
|
|
|
#ifndef __MACAPI__
|
|
#include <macapi.h>
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#include "macname2.h"
|
|
#endif // _WIN32
|
|
|
|
#endif // _MAC
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif // __OLE2_H__
|