windows-nt/Source/XPSP1/NT/com/oleutest/letest/ole2ui/olestd.h
2020-09-26 16:20:57 +08:00

853 lines
30 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*************************************************************************
**
** 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 <dos.h> // needed for filetime
#endif /* RC_INVOKED */
#include <commdlg.h> // needed for LPPRINTDLG
#include <shellapi.h> // 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 TEXT("\\")
#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) \
OleGetIconOfFileA(lpszFileName, fUseFileAsLabel)
#define GetIconOfClass(hInst, rclsid, lpszLabel, fUseTypeAsLabel) \
OleGetIconOfClassA(rclsid, lpszLabel, fUseTypeAsLabel)
#define OleUIMetafilePictFromIconAndLabel(hIcon,pszLabel,pszSourceFile,iIcon)\
OleMetafilePictFromIconAndLabelA(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 TEXT("Embed Source")
#define CF_EMBEDDEDOBJECT TEXT("Embedded Object")
#define CF_LINKSOURCE TEXT("Link Source")
#define CF_CUSTOMLINKSOURCE TEXT("Custom Link Source")
#define CF_OBJECTDESCRIPTOR TEXT("Object Descriptor")
#define CF_LINKSRCDESCRIPTOR TEXT("Link Source Descriptor")
#define CF_OWNERLINK TEXT("OwnerLink")
#define CF_FILENAME TEXT("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.
LPCTSTR 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.
LPCTSTR 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)
/* lstrcpyn is defined to be able to handle UNICODE string
* The third parameter here is the number of CHARACTERS that are
* to be copied.
*/
#define LSTRCPYN(lpdst, lpsrc, cch) \
(\
(lpdst)[(cch)-1] = '\0', \
(cch>1 ? lstrcpyn(lpdst, lpsrc, (cch)-1) : 0)\
)
/****** 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
STDAPI FnAssert(LPSTR lpstrExpr, LPSTR lpstrMsg, LPSTR lpstrFileName, UINT iLine);
#define OLEDBGASSERTDATA \
static char _based(_segname("_CODE")) _szAssertFile[]= TEXT(__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
#ifdef DLL_VER
#define OLEDBGDATA_MAIN(szPrefix) \
TCHAR NEAR g_szDbgPrefix[] = szPrefix; \
OLEDBGASSERTDATA
#define OLEDBGDATA \
extern TCHAR NEAR g_szDbgPrefix[]; \
OLEDBGASSERTDATA
#else
#define OLEDBGDATA_MAIN(szPrefix) \
TCHAR g_szDbgPrefix[] = szPrefix; \
OLEDBGASSERTDATA
#define OLEDBGDATA \
extern TCHAR g_szDbgPrefix[]; \
OLEDBGASSERTDATA
#endif
#define OLEDBG_BEGIN(lpsz) \
OleDbgPrintAlways(g_szDbgPrefix,lpsz,1);
#define OLEDBG_END \
OleDbgPrintAlways(g_szDbgPrefix,TEXT("End\r\n"),-1);
#define OleDbgOut(lpsz) \
OleDbgPrintAlways(g_szDbgPrefix,lpsz,0)
#define OleDbgOutNoPrefix(lpsz) \
OleDbgPrintAlways(TEXT(""),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,TEXT(""),lpsz,0)
#define OLEDBG_BEGIN1(lpsz) \
OleDbgPrint(1,g_szDbgPrefix,lpsz,1);
#define OLEDBG_END1 \
OleDbgPrint(1,g_szDbgPrefix,TEXT("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,TEXT(""),lpsz,0)
#define OLEDBG_BEGIN2(lpsz) \
OleDbgPrint(2,g_szDbgPrefix,lpsz,1);
#define OLEDBG_END2 \
OleDbgPrint(2,g_szDbgPrefix, TEXT("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,TEXT(""),lpsz,0)
#define OLEDBG_BEGIN3(lpsz) \
OleDbgPrint(3,g_szDbgPrefix,lpsz,1);
#define OLEDBG_END3 \
OleDbgPrint(3,g_szDbgPrefix,TEXT("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,TEXT(""),lpsz,0)
#define OLEDBG_BEGIN4(lpsz) \
OleDbgPrint(4,g_szDbgPrefix,lpsz,1);
#define OLEDBG_END4 \
OleDbgPrint(4,g_szDbgPrefix,TEXT("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(LPTSTR lpszStgName, DWORD grfMode);
STDAPI_(LPSTORAGE) OleStdOpenRootStorage(LPTSTR lpszStgName, DWORD grfMode);
STDAPI_(LPSTORAGE) OleStdOpenOrCreateRootStorage(LPTSTR lpszStgName, DWORD grfMode);
STDAPI_(LPSTORAGE) OleStdCreateChildStorage(LPSTORAGE lpStg, LPTSTR lpszStgName);
STDAPI_(LPSTORAGE) OleStdOpenChildStorage(LPSTORAGE lpStg, LPTSTR 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,
LPTSTR FAR* lplpszType
);
STDAPI OleStdDoTreatAsClass(LPTSTR lpszUserType, REFCLSID rclsid, REFCLSID rclsidNew);
STDAPI_(BOOL) OleStdSetupAdvises(LPOLEOBJECT lpOleObject, DWORD dwDrawAspect,
LPTSTR lpszContainerApp, LPTSTR 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(LPTSTR 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,
LPTSTR lpszFullUserTypeName,
LPTSTR lpszSrcOfCopy
);
STDAPI_(HGLOBAL) OleStdGetObjectDescriptorDataFromOleObject(
LPOLEOBJECT lpOleObj,
LPTSTR 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(LPTSTR lpszPrefixString, UINT FAR* lpuUnique, LPTSTR lpszName, LPMONIKER FAR* lplpmk);
STDAPI_(LPMONIKER) OleStdGetFirstMoniker(LPMONIKER lpmk);
STDAPI_(ULONG) OleStdGetLenFilePrefixOfMoniker(LPMONIKER lpmk);
STDAPI OleStdMkParseDisplayName(
REFCLSID rClsid,
LPBC lpbc,
LPTSTR 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(LPTSTR lpsz, LPMALLOC lpMalloc);
STDAPI_(LPTSTR) OleStdCopyString(LPTSTR lpszSrc, LPMALLOC lpMalloc);
STDAPI_(ULONG) OleStdGetItemToken(LPTSTR lpszSrc, LPTSTR lpszDst,int nMaxChars);
STDAPI_(UINT) OleStdIconLabelTextOut(HDC hDC,
HFONT hFont,
int nXStart,
int nYStart,
UINT fuOptions,
RECT FAR * lpRect,
LPTSTR lpszString,
UINT cchString,
int FAR * lpDX);
// registration database query functions
STDAPI_(UINT) OleStdGetAuxUserType(REFCLSID rclsid,
WORD wAuxUserType,
LPTSTR lpszAuxUserType,
int cch,
HKEY hKey);
STDAPI_(UINT) OleStdGetUserTypeOfClass(REFCLSID rclsid,
LPTSTR 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, LPTSTR lpszIface);
STDAPI_(ULONG) OleStdVerifyRelease(LPUNKNOWN lpUnk, LPTSTR 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,
LPTSTR lpszPrefix,
LPTSTR lpszMsg,
int nIndent
);
STDAPI_(void) OleDbgPrintAlways(LPTSTR lpszPrefix, LPTSTR lpszMsg, int nIndent);
STDAPI_(void) OleDbgSetDbgLevel(int nDbgLvl);
STDAPI_(int) OleDbgGetDbgLevel( void );
STDAPI_(void) OleDbgIndent(int n);
STDAPI_(void) OleDbgPrintRefCnt(
int nDbgLvl,
LPTSTR lpszPrefix,
LPTSTR lpszMsg,
LPVOID lpObj,
ULONG refcnt
);
STDAPI_(void) OleDbgPrintRefCntAlways(
LPTSTR lpszPrefix,
LPTSTR lpszMsg,
LPVOID lpObj,
ULONG refcnt
);
STDAPI_(void) OleDbgPrintRect(
int nDbgLvl,
LPTSTR lpszPrefix,
LPTSTR lpszMsg,
LPRECT lpRect
);
STDAPI_(void) OleDbgPrintRectAlways(
LPTSTR lpszPrefix,
LPTSTR lpszMsg,
LPRECT lpRect
);
STDAPI_(void) OleDbgPrintScodeAlways(LPTSTR lpszPrefix, LPTSTR 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_