/************************************************************************* ** ** OLE 2.0 Standard Utilities ** ** olestd.h ** ** This file contains file contains data structure defintions, ** function prototypes, constants, etc. for the common OLE 2.0 ** utilities. ** These utilities include the following: ** Debuging Assert/Verify macros ** HIMETRIC conversion routines ** reference counting debug support ** OleStd API's for common compound-document app support ** ** (c) Copyright Microsoft Corp. 1990 - 1992 All Rights Reserved ** *************************************************************************/ #if !defined( _OLESTD_H_ ) #define _OLESTD_H_ #ifndef RC_INVOKED #pragma message ("INCLUDING OLESTD.H from " __FILE__) #endif /* RC_INVOKED */ #if defined( __TURBOC__ ) || defined( WIN32 ) #define _based(a) #endif #ifndef RC_INVOKED #include // needed for filetime #endif /* RC_INVOKED */ #include // needed for LPPRINTDLG #include // needed for HKEY // String table defines... #define IDS_OLESTDNOCREATEFILE 700 #define IDS_OLESTDNOOPENFILE 701 #define IDS_OLESTDDISKFULL 702 /* * Some C interface declaration stuff */ #if ! defined(__cplusplus) typedef struct tagINTERFACEIMPL { IUnknownVtbl FAR* lpVtbl; LPVOID lpBack; int cRef; // interface specific ref count. } INTERFACEIMPL, FAR* LPINTERFACEIMPL; #define INIT_INTERFACEIMPL(lpIFace, pVtbl, pBack) \ ((lpIFace)->lpVtbl = pVtbl, \ ((LPINTERFACEIMPL)(lpIFace))->lpBack = (LPVOID)pBack, \ ((LPINTERFACEIMPL)(lpIFace))->cRef = 0 \ ) #if defined( _DEBUG ) #define OleDbgQueryInterfaceMethod(lpUnk) \ ((lpUnk) != NULL ? ((LPINTERFACEIMPL)(lpUnk))->cRef++ : 0) #define OleDbgAddRefMethod(lpThis, iface) \ ((LPINTERFACEIMPL)(lpThis))->cRef++ #if _DEBUGLEVEL >= 2 #define OleDbgReleaseMethod(lpThis, iface) \ (--((LPINTERFACEIMPL)(lpThis))->cRef == 0 ? \ OleDbgOut("\t" iface "* RELEASED (cRef == 0)\r\n"),1 : \ (((LPINTERFACEIMPL)(lpThis))->cRef < 0) ? \ ( \ DebugBreak(), \ OleDbgOut( \ "\tERROR: " iface "* RELEASED TOO MANY TIMES\r\n") \ ),1 : \ 1) #else // if _DEBUGLEVEL < 2 #define OleDbgReleaseMethod(lpThis, iface) \ (--((LPINTERFACEIMPL)(lpThis))->cRef == 0 ? \ 1 : \ (((LPINTERFACEIMPL)(lpThis))->cRef < 0) ? \ ( \ OleDbgOut( \ "\tERROR: " iface "* RELEASED TOO MANY TIMES\r\n") \ ),1 : \ 1) #endif // if _DEBUGLEVEL < 2 #else // ! defined (_DEBUG) #define OleDbgQueryInterfaceMethod(lpUnk) #define OleDbgAddRefMethod(lpThis, iface) #define OleDbgReleaseMethod(lpThis, iface) #endif // if defined( _DEBUG ) #endif // ! defined(__cplusplus) /* * Some docfiles stuff */ #define STGM_DFRALL (STGM_READWRITE | STGM_TRANSACTED | STGM_SHARE_DENY_WRITE) #define STGM_DFALL (STGM_READWRITE | STGM_TRANSACTED | STGM_SHARE_EXCLUSIVE) #define STGM_SALL (STGM_READWRITE | STGM_SHARE_EXCLUSIVE) /* * Some moniker stuff */ // Delimeter used to separate ItemMoniker pieces of a composite moniker #if defined( _MAC ) #define OLESTDDELIM ":" #else #define OLESTDDELIM "\\" #endif /* * Some Concurrency stuff */ /* standard Delay (in msec) to wait before retrying an LRPC call. ** this value is returned from IMessageFilter::RetryRejectedCall */ #define OLESTDRETRYDELAY (DWORD)5000 /* Cancel the pending outgoing LRPC call. ** this value is returned from IMessageFilter::RetryRejectedCall */ #define OLESTDCANCELRETRY (DWORD)-1 /* * Some Icon support stuff. * * The following API's are now OBSOLETE because equivalent API's have been * added to the OLE2.DLL library * GetIconOfFile superceeded by OleGetIconOfFile * GetIconOfClass superceeded by OleGetIconOfClass * OleUIMetafilePictFromIconAndLabel * superceeded by OleMetafilePictFromIconAndLabel * * The following macros are defined for backward compatibility with previous * versions of the OLE2UI library. It is recommended that the new Ole* API's * should be used instead. */ #define GetIconOfFile(hInst, lpszFileName, fUseFileAsLabel) \ OleGetIconOfFile(lpszFileName, fUseFileAsLabel) #define GetIconOfClass(hInst, rclsid, lpszLabel, fUseTypeAsLabel) \ OleGetIconOfClass(rclsid, lpszLabel, fUseTypeAsLabel) #define OleUIMetafilePictFromIconAndLabel(hIcon,pszLabel,pszSourceFile,iIcon)\ OleMetafilePictFromIconAndLabel(hIcon, pszLabel, pszSourceFile, iIcon) /* * Some Clipboard Copy/Paste & Drag/Drop support stuff */ //Macro to set all FormatEtc fields #define SETFORMATETC(fe, cf, asp, td, med, li) \ ((fe).cfFormat=cf, \ (fe).dwAspect=asp, \ (fe).ptd=td, \ (fe).tymed=med, \ (fe).lindex=li) //Macro to set interesting FormatEtc fields defaulting the others. #define SETDEFAULTFORMATETC(fe, cf, med) \ ((fe).cfFormat=cf, \ (fe).dwAspect=DVASPECT_CONTENT, \ (fe).ptd=NULL, \ (fe).tymed=med, \ (fe).lindex=-1) // Macro to test if two FormatEtc structures are an exact match #define IsEqualFORMATETC(fe1, fe2) \ (OleStdCompareFormatEtc(&(fe1), &(fe2))==0) // Clipboard format strings #define CF_EMBEDSOURCE "Embed Source" #define CF_EMBEDDEDOBJECT "Embedded Object" #define CF_LINKSOURCE "Link Source" #define CF_CUSTOMLINKSOURCE "Custom Link Source" #define CF_OBJECTDESCRIPTOR "Object Descriptor" #define CF_LINKSRCDESCRIPTOR "Link Source Descriptor" #define CF_OWNERLINK "OwnerLink" #define CF_FILENAME "FileName" #define OleStdQueryOleObjectData(lpformatetc) \ (((lpformatetc)->tymed & TYMED_ISTORAGE) ? \ NOERROR : ResultFromScode(DV_E_FORMATETC)) #define OleStdQueryLinkSourceData(lpformatetc) \ (((lpformatetc)->tymed & TYMED_ISTREAM) ? \ NOERROR : ResultFromScode(DV_E_FORMATETC)) #define OleStdQueryObjectDescriptorData(lpformatetc) \ (((lpformatetc)->tymed & TYMED_HGLOBAL) ? \ NOERROR : ResultFromScode(DV_E_FORMATETC)) #define OleStdQueryFormatMedium(lpformatetc, tymd) \ (((lpformatetc)->tymed & tymd) ? \ NOERROR : ResultFromScode(DV_E_FORMATETC)) // Make an independent copy of a MetafilePict #define OleStdCopyMetafilePict(hpictin, phpictout) \ (*(phpictout) = OleDuplicateData(hpictin,CF_METAFILEPICT,GHND|GMEM_SHARE)) // REVIEW: these need to be added to OLE2.H #if !defined( DD_DEFSCROLLINTERVAL ) #define DD_DEFSCROLLINTERVAL 50 #endif #if !defined( DD_DEFDRAGDELAY ) #define DD_DEFDRAGDELAY 200 #endif #if !defined( DD_DEFDRAGMINDIST ) #define DD_DEFDRAGMINDIST 2 #endif /* OleStdGetDropEffect ** ------------------- ** ** Convert a keyboard state into a DROPEFFECT. ** ** returns the DROPEFFECT value derived from the key state. ** the following is the standard interpretation: ** no modifier -- Default Drop (NULL is returned) ** CTRL -- DROPEFFECT_COPY ** SHIFT -- DROPEFFECT_MOVE ** CTRL-SHIFT -- DROPEFFECT_LINK ** ** Default Drop: this depends on the type of the target application. ** this is re-interpretable by each target application. a typical ** interpretation is if the drag is local to the same document ** (which is source of the drag) then a MOVE operation is ** performed. if the drag is not local, then a COPY operation is ** performed. */ #define OleStdGetDropEffect(grfKeyState) \ ( (grfKeyState & MK_CONTROL) ? \ ( (grfKeyState & MK_SHIFT) ? DROPEFFECT_LINK : DROPEFFECT_COPY ) : \ ( (grfKeyState & MK_SHIFT) ? DROPEFFECT_MOVE : 0 ) ) /* The OLEUIPASTEFLAG enumeration is used by the OLEUIPASTEENTRY structure. * * OLEUIPASTE_ENABLEICON If the container does not specify this flag for the entry in the * OLEUIPASTEENTRY array passed as input to OleUIPasteSpecial, the DisplayAsIcon button will be * unchecked and disabled when the the user selects the format that corresponds to the entry. * * OLEUIPASTE_PASTEONLY Indicates that the entry in the OLEUIPASTEENTRY array is valid for pasting only. * OLEUIPASTE_PASTE Indicates that the entry in the OLEUIPASTEENTRY array is valid for pasting. It * may also be valid for linking if any of the following linking flags are specified. * * If the entry in the OLEUIPASTEENTRY array is valid for linking, the following flags indicate which link * types are acceptable by OR'ing together the appropriate OLEUIPASTE_LINKTYPE<#> values. * These values correspond as follows to the array of link types passed to OleUIPasteSpecial: * OLEUIPASTE_LINKTYPE1=arrLinkTypes[0] * OLEUIPASTE_LINKTYPE2=arrLinkTypes[1] * OLEUIPASTE_LINKTYPE3=arrLinkTypes[2] * OLEUIPASTE_LINKTYPE4=arrLinkTypes[3] * OLEUIPASTE_LINKTYPE5=arrLinkTypes[4] * OLEUIPASTE_LINKTYPE6=arrLinkTypes[5] * OLEUIPASTE_LINKTYPE7=arrLinkTypes[6] * OLEUIPASTE_LINKTYPE8=arrLinkTypes[7] * * where, * UINT arrLinkTypes[8] is an array of registered clipboard formats for linking. A maximium of 8 link * types are allowed. */ typedef enum tagOLEUIPASTEFLAG { OLEUIPASTE_ENABLEICON = 2048, // enable display as icon OLEUIPASTE_PASTEONLY = 0, OLEUIPASTE_PASTE = 512, OLEUIPASTE_LINKANYTYPE = 1024, OLEUIPASTE_LINKTYPE1 = 1, OLEUIPASTE_LINKTYPE2 = 2, OLEUIPASTE_LINKTYPE3 = 4, OLEUIPASTE_LINKTYPE4 = 8, OLEUIPASTE_LINKTYPE5 = 16, OLEUIPASTE_LINKTYPE6 = 32, OLEUIPASTE_LINKTYPE7 = 64, OLEUIPASTE_LINKTYPE8 = 128 } OLEUIPASTEFLAG; /* * PasteEntry structure * -------------------- * An array of OLEUIPASTEENTRY entries is specified for the PasteSpecial dialog * box. Each entry includes a FORMATETC which specifies the formats that are * acceptable, a string that is to represent the format in the dialog's list * box, a string to customize the result text of the dialog and a set of flags * from the OLEUIPASTEFLAG enumeration. The flags indicate if the entry is * valid for pasting only, linking only or both pasting and linking. If the * entry is valid for linking, the flags indicate which link types are * acceptable by OR'ing together the appropriate OLEUIPASTE_LINKTYPE<#> values. * These values correspond to the array of link types as follows: * OLEUIPASTE_LINKTYPE1=arrLinkTypes[0] * OLEUIPASTE_LINKTYPE2=arrLinkTypes[1] * OLEUIPASTE_LINKTYPE3=arrLinkTypes[2] * OLEUIPASTE_LINKTYPE4=arrLinkTypes[3] * OLEUIPASTE_LINKTYPE5=arrLinkTypes[4] * OLEUIPASTE_LINKTYPE6=arrLinkTypes[5] * OLEUIPASTE_LINKTYPE7=arrLinkTypes[6] * OLEUIPASTE_LINKTYPE8=arrLinkTypes[7] * UINT arrLinkTypes[8]; is an array of registered clipboard formats * for linking. A maximium of 8 link types are allowed. */ typedef struct tagOLEUIPASTEENTRY { FORMATETC fmtetc; // Format that is acceptable. The paste // dialog checks if this format is // offered by the object on the // clipboard and if so offers it for // selection to the user. LPCSTR lpstrFormatName; // String that represents the format to the user. Any %s // in this string is replaced by the FullUserTypeName // of the object on the clipboard and the resulting string // is placed in the list box of the dialog. Atmost // one %s is allowed. The presence or absence of %s indicates // if the result text is to indicate that data is // being pasted or that an object that can be activated by // an application is being pasted. If %s is // present, the result-text says that an object is being pasted. // Otherwise it says that data is being pasted. LPCSTR lpstrResultText; // String to customize the result text of the dialog when // the user selects the format correspoding to this // entry. Any %s in this string is replaced by the the application // name or FullUserTypeName of the object on // the clipboard. Atmost one %s is allowed. DWORD dwFlags; // Values from OLEUIPASTEFLAG enum DWORD dwScratchSpace; // Scratch space available to be used // by routines which loop through an // IEnumFORMATETC* to mark if the // PasteEntry format is available. // this field CAN be left uninitialized. } OLEUIPASTEENTRY, *POLEUIPASTEENTRY, FAR *LPOLEUIPASTEENTRY; #define OLESTDDROP_NONE 0 #define OLESTDDROP_DEFAULT 1 #define OLESTDDROP_NONDEFAULT 2 /* * Some misc stuff */ #define EMBEDDINGFLAG "Embedding" // Cmd line switch for launching a srvr #define HIMETRIC_PER_INCH 2540 // number HIMETRIC units per inch #define PTS_PER_INCH 72 // number points (font size) per inch #define MAP_PIX_TO_LOGHIM(x,ppli) MulDiv(HIMETRIC_PER_INCH, (x), (ppli)) #define MAP_LOGHIM_TO_PIX(x,ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH) // Returns TRUE if all fields of the two Rect's are equal, else FALSE. #define AreRectsEqual(lprc1, lprc2) \ (((lprc1->top == lprc2->top) && \ (lprc1->left == lprc2->left) && \ (lprc1->right == lprc2->right) && \ (lprc1->bottom == lprc2->bottom)) ? TRUE : FALSE) // The Windows "lstrcpyn" has slightly different semantics than does // the standard-C library strncpy. It just so happens that lstrcpyn // has exactly the semantics we want, so we just use it. The specific // behavior that is needed is that the resulting string must always // be NUL terminated, which is not the case with strncpy. The count // of characters (cch) is the limit on the number of characters to // place in the resulting string including the NUL. In other words, // (cch) is the size of the destination buffer. #define LSTRCPYN(lpdst, lpsrc, cch) lstrcpyn(lpdst, lpsrc, cch) /****** DEBUG Stuff *****************************************************/ #ifdef _DEBUG #if !defined( _DBGTRACE ) #define _DEBUGLEVEL 2 #else #define _DEBUGLEVEL _DBGTRACE #endif #if defined( NOASSERT ) #define OLEDBGASSERTDATA #define OleDbgAssert(a) #define OleDbgAssertSz(a, b) #define OleDbgVerify(a) #define OleDbgVerifySz(a, b) #else // ! NOASSERT #define OLEDBGASSERTDATA \ static char _based(_segname("_CODE")) _szAssertFile[]= __FILE__; #define OleDbgAssert(a) \ (!(a) ? FnAssert(#a, NULL, _szAssertFile, __LINE__) : (HRESULT)1) #define OleDbgAssertSz(a, b) \ (!(a) ? FnAssert(#a, b, _szAssertFile, __LINE__) : (HRESULT)1) #define OleDbgVerify(a) \ OleDbgAssert(a) #define OleDbgVerifySz(a, b) \ OleDbgAssertSz(a, b) #endif // ! NOASSERT #define OLEDBGDATA_MAIN(szPrefix) \ char near g_szDbgPrefix[] = szPrefix; \ OLEDBGASSERTDATA #define OLEDBGDATA \ extern char near g_szDbgPrefix[]; \ OLEDBGASSERTDATA #define OLEDBG_BEGIN(lpsz) \ OleDbgPrintAlways(g_szDbgPrefix,lpsz,1); #define OLEDBG_END \ OleDbgPrintAlways(g_szDbgPrefix,"End\r\n",-1); #define OleDbgOut(lpsz) \ OleDbgPrintAlways(g_szDbgPrefix,lpsz,0) #define OleDbgOutNoPrefix(lpsz) \ OleDbgPrintAlways("",lpsz,0) #define OleDbgOutRefCnt(lpsz,lpObj,refcnt) \ OleDbgPrintRefCntAlways(g_szDbgPrefix,lpsz,lpObj,(ULONG)refcnt) #define OleDbgOutRect(lpsz,lpRect) \ OleDbgPrintRectAlways(g_szDbgPrefix,lpsz,lpRect) #define OleDbgOutHResult(lpsz,hr) \ OleDbgPrintScodeAlways(g_szDbgPrefix,lpsz,GetScode(hr)) #define OleDbgOutScode(lpsz,sc) \ OleDbgPrintScodeAlways(g_szDbgPrefix,lpsz,sc) #define OleDbgOut1(lpsz) \ OleDbgPrint(1,g_szDbgPrefix,lpsz,0) #define OleDbgOutNoPrefix1(lpsz) \ OleDbgPrint(1,"",lpsz,0) #define OLEDBG_BEGIN1(lpsz) \ OleDbgPrint(1,g_szDbgPrefix,lpsz,1); #define OLEDBG_END1 \ OleDbgPrint(1,g_szDbgPrefix,"End\r\n",-1); #define OleDbgOutRefCnt1(lpsz,lpObj,refcnt) \ OleDbgPrintRefCnt(1,g_szDbgPrefix,lpsz,lpObj,(ULONG)refcnt) #define OleDbgOutRect1(lpsz,lpRect) \ OleDbgPrintRect(1,g_szDbgPrefix,lpsz,lpRect) #define OleDbgOut2(lpsz) \ OleDbgPrint(2,g_szDbgPrefix,lpsz,0) #define OleDbgOutNoPrefix2(lpsz) \ OleDbgPrint(2,"",lpsz,0) #define OLEDBG_BEGIN2(lpsz) \ OleDbgPrint(2,g_szDbgPrefix,lpsz,1); #define OLEDBG_END2 \ OleDbgPrint(2,g_szDbgPrefix,"End\r\n",-1); #define OleDbgOutRefCnt2(lpsz,lpObj,refcnt) \ OleDbgPrintRefCnt(2,g_szDbgPrefix,lpsz,lpObj,(ULONG)refcnt) #define OleDbgOutRect2(lpsz,lpRect) \ OleDbgPrintRect(2,g_szDbgPrefix,lpsz,lpRect) #define OleDbgOut3(lpsz) \ OleDbgPrint(3,g_szDbgPrefix,lpsz,0) #define OleDbgOutNoPrefix3(lpsz) \ OleDbgPrint(3,"",lpsz,0) #define OLEDBG_BEGIN3(lpsz) \ OleDbgPrint(3,g_szDbgPrefix,lpsz,1); #define OLEDBG_END3 \ OleDbgPrint(3,g_szDbgPrefix,"End\r\n",-1); #define OleDbgOutRefCnt3(lpsz,lpObj,refcnt) \ OleDbgPrintRefCnt(3,g_szDbgPrefix,lpsz,lpObj,(ULONG)refcnt) #define OleDbgOutRect3(lpsz,lpRect) \ OleDbgPrintRect(3,g_szDbgPrefix,lpsz,lpRect) #define OleDbgOut4(lpsz) \ OleDbgPrint(4,g_szDbgPrefix,lpsz,0) #define OleDbgOutNoPrefix4(lpsz) \ OleDbgPrint(4,"",lpsz,0) #define OLEDBG_BEGIN4(lpsz) \ OleDbgPrint(4,g_szDbgPrefix,lpsz,1); #define OLEDBG_END4 \ OleDbgPrint(4,g_szDbgPrefix,"End\r\n",-1); #define OleDbgOutRefCnt4(lpsz,lpObj,refcnt) \ OleDbgPrintRefCnt(4,g_szDbgPrefix,lpsz,lpObj,(ULONG)refcnt) #define OleDbgOutRect4(lpsz,lpRect) \ OleDbgPrintRect(4,g_szDbgPrefix,lpsz,lpRect) #else // !_DEBUG #define OLEDBGDATA_MAIN(szPrefix) #define OLEDBGDATA #define OleDbgAssert(a) #define OleDbgAssertSz(a, b) #define OleDbgVerify(a) (a) #define OleDbgVerifySz(a, b) (a) #define OleDbgOutHResult(lpsz,hr) #define OleDbgOutScode(lpsz,sc) #define OLEDBG_BEGIN(lpsz) #define OLEDBG_END #define OleDbgOut(lpsz) #define OleDbgOut1(lpsz) #define OleDbgOut2(lpsz) #define OleDbgOut3(lpsz) #define OleDbgOut4(lpsz) #define OleDbgOutNoPrefix(lpsz) #define OleDbgOutNoPrefix1(lpsz) #define OleDbgOutNoPrefix2(lpsz) #define OleDbgOutNoPrefix3(lpsz) #define OleDbgOutNoPrefix4(lpsz) #define OLEDBG_BEGIN1(lpsz) #define OLEDBG_BEGIN2(lpsz) #define OLEDBG_BEGIN3(lpsz) #define OLEDBG_BEGIN4(lpsz) #define OLEDBG_END1 #define OLEDBG_END2 #define OLEDBG_END3 #define OLEDBG_END4 #define OleDbgOutRefCnt(lpsz,lpObj,refcnt) #define OleDbgOutRefCnt1(lpsz,lpObj,refcnt) #define OleDbgOutRefCnt2(lpsz,lpObj,refcnt) #define OleDbgOutRefCnt3(lpsz,lpObj,refcnt) #define OleDbgOutRefCnt4(lpsz,lpObj,refcnt) #define OleDbgOutRect(lpsz,lpRect) #define OleDbgOutRect1(lpsz,lpRect) #define OleDbgOutRect2(lpsz,lpRect) #define OleDbgOutRect3(lpsz,lpRect) #define OleDbgOutRect4(lpsz,lpRect) #endif // _DEBUG /************************************************************************* ** Function prototypes *************************************************************************/ //OLESTD.C STDAPI_(int) SetDCToAnisotropic(HDC hDC, LPRECT lprcPhysical, LPRECT lprcLogical, LPRECT lprcWindowOld, LPRECT lprcViewportOld); STDAPI_(int) SetDCToDrawInHimetricRect(HDC, LPRECT, LPRECT, LPRECT, LPRECT); STDAPI_(int) ResetOrigDC(HDC, int, LPRECT, LPRECT); STDAPI_(int) XformWidthInHimetricToPixels(HDC, int); STDAPI_(int) XformWidthInPixelsToHimetric(HDC, int); STDAPI_(int) XformHeightInHimetricToPixels(HDC, int); STDAPI_(int) XformHeightInPixelsToHimetric(HDC, int); STDAPI_(void) XformRectInPixelsToHimetric(HDC, LPRECT, LPRECT); STDAPI_(void) XformRectInHimetricToPixels(HDC, LPRECT, LPRECT); STDAPI_(void) XformSizeInPixelsToHimetric(HDC, LPSIZEL, LPSIZEL); STDAPI_(void) XformSizeInHimetricToPixels(HDC, LPSIZEL, LPSIZEL); STDAPI_(int) XformWidthInHimetricToPixels(HDC, int); STDAPI_(int) XformWidthInPixelsToHimetric(HDC, int); STDAPI_(int) XformHeightInHimetricToPixels(HDC, int); STDAPI_(int) XformHeightInPixelsToHimetric(HDC, int); STDAPI_(void) ParseCmdLine(LPSTR, BOOL FAR *, LPSTR); STDAPI_(BOOL) OleStdIsOleLink(LPUNKNOWN lpUnk); STDAPI_(LPUNKNOWN) OleStdQueryInterface(LPUNKNOWN lpUnk, REFIID riid); STDAPI_(LPSTORAGE) OleStdCreateRootStorage(LPSTR lpszStgName, DWORD grfMode); STDAPI_(LPSTORAGE) OleStdOpenRootStorage(LPSTR lpszStgName, DWORD grfMode); STDAPI_(LPSTORAGE) OleStdOpenOrCreateRootStorage(LPSTR lpszStgName, DWORD grfMode); STDAPI_(LPSTORAGE) OleStdCreateChildStorage(LPSTORAGE lpStg, LPSTR lpszStgName); STDAPI_(LPSTORAGE) OleStdOpenChildStorage(LPSTORAGE lpStg, LPSTR lpszStgName, DWORD grfMode); STDAPI_(BOOL) OleStdCommitStorage(LPSTORAGE lpStg); STDAPI OleStdDestroyAllElements(LPSTORAGE lpStg); STDAPI_(LPSTORAGE) OleStdCreateStorageOnHGlobal( HANDLE hGlobal, BOOL fDeleteOnRelease, DWORD dwgrfMode ); STDAPI_(LPSTORAGE) OleStdCreateTempStorage(BOOL fUseMemory, DWORD grfMode); STDAPI OleStdDoConvert(LPSTORAGE lpStg, REFCLSID rClsidNew); STDAPI_(BOOL) OleStdGetTreatAsFmtUserType( REFCLSID rClsidApp, LPSTORAGE lpStg, CLSID FAR* lpclsid, CLIPFORMAT FAR* lpcfFmt, LPSTR FAR* lplpszType ); STDAPI OleStdDoTreatAsClass(LPSTR lpszUserType, REFCLSID rclsid, REFCLSID rclsidNew); STDAPI_(BOOL) OleStdSetupAdvises(LPOLEOBJECT lpOleObject, DWORD dwDrawAspect, LPSTR lpszContainerApp, LPSTR lpszContainerObj, LPADVISESINK lpAdviseSink, BOOL fCreate); STDAPI OleStdSwitchDisplayAspect( LPOLEOBJECT lpOleObj, LPDWORD lpdwCurAspect, DWORD dwNewAspect, HGLOBAL hMetaPict, BOOL fDeleteOldAspect, BOOL fSetupViewAdvise, LPADVISESINK lpAdviseSink, BOOL FAR* lpfMustUpdate ); STDAPI OleStdSetIconInCache(LPOLEOBJECT lpOleObj, HGLOBAL hMetaPict); STDAPI_(HGLOBAL) OleStdGetData( LPDATAOBJECT lpDataObj, CLIPFORMAT cfFormat, DVTARGETDEVICE FAR* lpTargetDevice, DWORD dwAspect, LPSTGMEDIUM lpMedium ); STDAPI_(void) OleStdMarkPasteEntryList( LPDATAOBJECT lpSrcDataObj, LPOLEUIPASTEENTRY lpPriorityList, int cEntries ); STDAPI_(int) OleStdGetPriorityClipboardFormat( LPDATAOBJECT lpSrcDataObj, LPOLEUIPASTEENTRY lpPriorityList, int cEntries ); STDAPI_(BOOL) OleStdIsDuplicateFormat( LPFORMATETC lpFmtEtc, LPFORMATETC arrFmtEtc, int nFmtEtc ); STDAPI_(void) OleStdRegisterAsRunning(LPUNKNOWN lpUnk, LPMONIKER lpmkFull, DWORD FAR* lpdwRegister); STDAPI_(void) OleStdRevokeAsRunning(DWORD FAR* lpdwRegister); STDAPI_(void) OleStdNoteFileChangeTime(LPSTR lpszFileName, DWORD dwRegister); STDAPI_(void) OleStdNoteObjectChangeTime(DWORD dwRegister); STDAPI OleStdGetOleObjectData( LPPERSISTSTORAGE lpPStg, LPFORMATETC lpformatetc, LPSTGMEDIUM lpMedium, BOOL fUseMemory ); STDAPI OleStdGetLinkSourceData( LPMONIKER lpmk, LPCLSID lpClsID, LPFORMATETC lpformatetc, LPSTGMEDIUM lpMedium ); STDAPI_(HGLOBAL) OleStdGetObjectDescriptorData( CLSID clsid, DWORD dwAspect, SIZEL sizel, POINTL pointl, DWORD dwStatus, LPSTR lpszFullUserTypeName, LPSTR lpszSrcOfCopy ); STDAPI_(HGLOBAL) OleStdGetObjectDescriptorDataFromOleObject( LPOLEOBJECT lpOleObj, LPSTR lpszSrcOfCopy, DWORD dwAspect, POINTL pointl, LPSIZEL lpSizelHim ); STDAPI_(HGLOBAL) OleStdFillObjectDescriptorFromData( LPDATAOBJECT lpDataObject, LPSTGMEDIUM lpmedium, CLIPFORMAT FAR* lpcfFmt ); STDAPI_(HANDLE) OleStdGetMetafilePictFromOleObject( LPOLEOBJECT lpOleObj, DWORD dwDrawAspect, LPSIZEL lpSizelHim, DVTARGETDEVICE FAR* ptd ); STDAPI_(void) OleStdCreateTempFileMoniker(LPSTR lpszPrefixString, UINT FAR* lpuUnique, LPSTR lpszName, LPMONIKER FAR* lplpmk); STDAPI_(LPMONIKER) OleStdGetFirstMoniker(LPMONIKER lpmk); STDAPI_(ULONG) OleStdGetLenFilePrefixOfMoniker(LPMONIKER lpmk); STDAPI OleStdMkParseDisplayName( REFCLSID rClsid, LPBC lpbc, LPSTR lpszUserName, ULONG FAR* lpchEaten, LPMONIKER FAR* lplpmk ); STDAPI_(LPVOID) OleStdMalloc(ULONG ulSize); STDAPI_(LPVOID) OleStdRealloc(LPVOID pmem, ULONG ulSize); STDAPI_(void) OleStdFree(LPVOID pmem); STDAPI_(ULONG) OleStdGetSize(LPVOID pmem); STDAPI_(void) OleStdFreeString(LPSTR lpsz, LPMALLOC lpMalloc); STDAPI_(LPSTR) OleStdCopyString(LPSTR lpszSrc, LPMALLOC lpMalloc); STDAPI_(ULONG) OleStdGetItemToken(LPSTR lpszSrc, LPSTR lpszDst,int nMaxChars); STDAPI_(UINT) OleStdIconLabelTextOut(HDC hDC, HFONT hFont, int nXStart, int nYStart, UINT fuOptions, RECT FAR * lpRect, LPSTR lpszString, UINT cchString, int FAR * lpDX); // registration database query functions STDAPI_(UINT) OleStdGetAuxUserType(REFCLSID rclsid, WORD wAuxUserType, LPSTR lpszAuxUserType, int cch, HKEY hKey); STDAPI_(UINT) OleStdGetUserTypeOfClass(REFCLSID rclsid, LPSTR lpszUserType, UINT cch, HKEY hKey); STDAPI_(BOOL) OleStdGetMiscStatusOfClass(REFCLSID, HKEY, DWORD FAR *); STDAPI_(CLIPFORMAT) OleStdGetDefaultFileFormatOfClass( REFCLSID rclsid, HKEY hKey ); STDAPI_(void) OleStdInitVtbl(LPVOID lpVtbl, UINT nSizeOfVtbl); STDMETHODIMP OleStdNullMethod(LPUNKNOWN lpThis); STDAPI_(BOOL) OleStdCheckVtbl(LPVOID lpVtbl, UINT nSizeOfVtbl, LPSTR lpszIface); STDAPI_(ULONG) OleStdVerifyRelease(LPUNKNOWN lpUnk, LPSTR lpszMsg); STDAPI_(ULONG) OleStdRelease(LPUNKNOWN lpUnk); STDAPI_(HDC) OleStdCreateDC(DVTARGETDEVICE FAR* ptd); STDAPI_(HDC) OleStdCreateIC(DVTARGETDEVICE FAR* ptd); STDAPI_(DVTARGETDEVICE FAR*) OleStdCreateTargetDevice(LPPRINTDLG lpPrintDlg); STDAPI_(BOOL) OleStdDeleteTargetDevice(DVTARGETDEVICE FAR* ptd); STDAPI_(DVTARGETDEVICE FAR*) OleStdCopyTargetDevice(DVTARGETDEVICE FAR* ptdSrc); STDAPI_(BOOL) OleStdCopyFormatEtc(LPFORMATETC petcDest, LPFORMATETC petcSrc); STDAPI_(int) OleStdCompareFormatEtc(FORMATETC FAR* pFetcLeft, FORMATETC FAR* pFetcRight); STDAPI_(BOOL) OleStdCompareTargetDevice (DVTARGETDEVICE FAR* ptdLeft, DVTARGETDEVICE FAR* ptdRight); STDAPI_(void) OleDbgPrint( int nDbgLvl, LPSTR lpszPrefix, LPSTR lpszMsg, int nIndent ); STDAPI_(void) OleDbgPrintAlways(LPSTR lpszPrefix, LPSTR lpszMsg, int nIndent); STDAPI_(void) OleDbgSetDbgLevel(int nDbgLvl); STDAPI_(int) OleDbgGetDbgLevel( void ); STDAPI_(void) OleDbgIndent(int n); STDAPI_(void) OleDbgPrintRefCnt( int nDbgLvl, LPSTR lpszPrefix, LPSTR lpszMsg, LPVOID lpObj, ULONG refcnt ); STDAPI_(void) OleDbgPrintRefCntAlways( LPSTR lpszPrefix, LPSTR lpszMsg, LPVOID lpObj, ULONG refcnt ); STDAPI_(void) OleDbgPrintRect( int nDbgLvl, LPSTR lpszPrefix, LPSTR lpszMsg, LPRECT lpRect ); STDAPI_(void) OleDbgPrintRectAlways( LPSTR lpszPrefix, LPSTR lpszMsg, LPRECT lpRect ); STDAPI_(void) OleDbgPrintScodeAlways(LPSTR lpszPrefix, LPSTR lpszMsg, SCODE sc); // debug implementation of the IMalloc interface. STDAPI OleStdCreateDbAlloc(ULONG reserved, IMalloc FAR* FAR* ppmalloc); STDAPI_(LPENUMFORMATETC) OleStdEnumFmtEtc_Create(ULONG nCount, LPFORMATETC lpEtc); STDAPI_(LPENUMSTATDATA) OleStdEnumStatData_Create(ULONG nCount, LPSTATDATA lpStat); STDAPI_(BOOL) OleStdCopyStatData(LPSTATDATA pDest, LPSTATDATA pSrc); STDAPI_(HPALETTE) OleStdCreateStandardPalette(void); #if defined( OBSOLETE ) /************************************************************************* ** The following API's have been converted into macros: ** OleStdQueryOleObjectData ** OleStdQueryLinkSourceData ** OleStdQueryObjectDescriptorData ** OleStdQueryFormatMedium ** OleStdCopyMetafilePict ** AreRectsEqual ** OleStdGetDropEffect ** ** These macros are defined above *************************************************************************/ STDAPI_(BOOL) AreRectsEqual(LPRECT lprc1, LPRECT lprc2); STDAPI_(BOOL) OleStdCopyMetafilePict(HANDLE hpictin, HANDLE FAR* phpictout); STDAPI OleStdQueryOleObjectData(LPFORMATETC lpformatetc); STDAPI OleStdQueryLinkSourceData(LPFORMATETC lpformatetc); STDAPI OleStdQueryObjectDescriptorData(LPFORMATETC lpformatetc); STDAPI OleStdQueryFormatMedium(LPFORMATETC lpformatetc, TYMED tymed); STDAPI_(DWORD) OleStdGetDropEffect ( DWORD grfKeyState ); #endif // OBSOLETE #endif // _OLESTD_H_