module win32.ole2; /* * ported for below by mike wynn */ //+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992-1997. // // 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. // //---------------------------------------------------------------------------- // Set packing to 8 //#include //#include //#include //#include /* pull in the MIDL generated header */ //#include import win32.com.OLEIDL; import win32.com.extras; extern(Windows) { // 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 */ enum { OLEIVERB_PRIMARY = 0, OLEIVERB_SHOW =-1, OLEIVERB_OPEN =-2, OLEIVERB_HIDE =-3, OLEIVERB_UIACTIVATE =-4, OLEIVERB_INPLACEACTIVATE =-5, OLEIVERB_DISCARDUNDOSTATE =-6 } enum OLEIVERB { PRIMARY = 0, SHOW =-1, OPEN =-2, HIDE =-3, UIACTIVATE =-4, INPLACEACTIVATE =-5, DISCARDUNDOSTATE =-6 } // for OleCreateEmbeddingHelper flags; roles in low word; options in high word enum { EMBDHLP_INPROC_HANDLER =0x0000, EMBDHLP_INPROC_SERVER =0x0001, EMBDHLP_CREATENOW =0x00000000, EMBDHLP_DELAYCREATE =0x00010000 } enum EMBDHLP { INPROC_HANDLER =0x0000, INPROC_SERVER =0x0001, CREATENOW =0x00000000, DELAYCREATE =0x00010000 } /* extended create function flags */ enum { OLECREATE_LEAVERUNNING = 0x00000001 } enum OLECREATE { LEAVERUNNING = 0x00000001 } /****** DV APIs ***********************************************************/ HRESULT CreateDataAdviseHolder( LPDATAADVISEHOLDER * ppDAHolder); /****** OLE API Prototypes ************************************************/ DWORD OleBuildVersion(); /* helper functions */ HRESULT ReadClassStg( LPSTORAGE pStg, CLSID * pclsid); HRESULT WriteClassStg( LPSTORAGE pStg, REFCLSID rclsid); HRESULT ReadClassStm( LPSTREAM pStm, CLSID * pclsid); HRESULT WriteClassStm( LPSTREAM pStm, REFCLSID rclsid); HRESULT WriteFmtUserTypeStg( LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType); HRESULT ReadFmtUserTypeStg( LPSTORAGE pstg, CLIPFORMAT * pcf, LPOLESTR * lplpszUserType); /* init/term */ HRESULT OleInitialize(LPVOID pvReserved); void OleUninitialize(); /* APIs to query whether (Embedded/Linked) object can be created from the data object */ HRESULT OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject); HRESULT OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject); /* Object creation APIs */ HRESULT OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateEx(REFCLSID rclsid, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLinkFromDataEx(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLinkEx(LPMONIKER pmkLinkSrc, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateLinkToFileEx(LPCOLESTR lpszFileName, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleCreateFromFileEx(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD* rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink lpAdviseSink, DWORD * rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID * ppvObj); HRESULT OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID * ppvObj); HRESULT OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad); HRESULT OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID * ppvObj); HRESULT OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm ); HRESULT OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained); HRESULT OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible); /* Drag/Drop APIs */ HRESULT RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget); HRESULT RevokeDragDrop(HWND hwnd); HRESULT DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource, DWORD dwOKEffects, LPDWORD pdwEffect); /* Clipboard APIs */ HRESULT OleSetClipboard(LPDATAOBJECT pDataObj); HRESULT OleGetClipboard(LPDATAOBJECT * ppDataObj); HRESULT OleFlushClipboard(); HRESULT OleIsCurrentClipboard(LPDATAOBJECT pDataObj); /* InPlace Editing APIs */ HOLEMENU OleCreateMenuDescriptor (HMENU hmenuCombined, LPOLEMENUGROUPWIDTHS lpMenuWidths); HRESULT OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame, HWND hwndActiveObject, LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEACTIVEOBJECT lpActiveObj); HRESULT OleDestroyMenuDescriptor (HOLEMENU holemenu); HRESULT OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg); /* Helper APIs */ HANDLE OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags); HRESULT OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, LPCRECT lprcBounds); HRESULT OleRun(LPUNKNOWN pUnknown); BOOL OleIsRunning(LPOLEOBJECT pObject); HRESULT OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses); void ReleaseStgMedium(LPSTGMEDIUM); HRESULT CreateOleAdviseHolder(LPOLEADVISEHOLDER * ppOAHolder); HRESULT OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID * lplpObj); HRESULT OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter, DWORD flags, LPCLASSFACTORY pCF, REFIID riid, LPVOID * lplpObj); BOOL IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD * lpwCmd); /* Icon extraction Helper APIs */ HGLOBAL OleGetIconOfFile(LPOLESTR lpszPath, BOOL fUseFileAsLabel); HGLOBAL OleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel); HGLOBAL OleMetafilePictFromIconAndLabel(HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex); /* Registration Database Helper APIs */ HRESULT OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType, LPOLESTR * pszUserType); HRESULT OleRegGetMiscStatus (REFCLSID clsid, DWORD dwAspect, DWORD * pdwStatus); HRESULT OleRegEnumFormatEtc (REFCLSID clsid, DWORD dwDirection, LPENUMFORMATETC * ppenum); HRESULT OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB * ppenum); /* OLE 1.0 conversion APIS */ /***** OLE 1.0 OLESTREAM declarations *************************************/ alias OLESTREAM * LPOLESTREAM; struct OLESTREAMVTBL { DWORD (* Get)(LPOLESTREAM, void *, DWORD); DWORD (* Put)(LPOLESTREAM, void *, DWORD); } alias OLESTREAMVTBL * LPOLESTREAMVTBL; struct OLESTREAM { LPOLESTREAMVTBL lpstbl; } HRESULT OleConvertOLESTREAMToIStorage (LPOLESTREAM lpolestream, LPSTORAGE pstg, DVTARGETDEVICE * ptd); HRESULT OleConvertIStorageToOLESTREAM (LPSTORAGE pstg, LPOLESTREAM lpolestream); /* Storage Utility APIs */ HRESULT GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL * phglobal); HRESULT CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES * pplkbyt); HRESULT GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL * phglobal); HRESULT CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM * ppstm); /* ConvertTo APIS */ HRESULT OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew); HRESULT OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew); HRESULT OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew); HRESULT GetConvertStg(LPSTORAGE pStg); HRESULT SetConvertStg(LPSTORAGE pStg, BOOL fConvert); HRESULT 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); HRESULT OleConvertOLESTREAMToIStorageEx (LPOLESTREAM polestm, LPSTORAGE pstg, // Presentation data from OLESTREAM CLIPFORMAT * pcfFormat, // format LONG * plwWidth, // width LONG * plHeight, // height DWORD * pdwSize, // size in bytes LPSTGMEDIUM pmedium); // bits } // extern(Windows)