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

329 lines
10 KiB
C

/*************************************************************************
**
** OLE 2.0 Utility Library
**
** 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 - 1995 All Rights Reserved
**
*************************************************************************/
#ifndef _OLESTD_H_
#define _OLESTD_H_
#include <commdlg.h> // needed for LPPRINTDLG
#include <shellapi.h> // needed for HKEY
#include <oledlg.h> // need some paste special defines
#ifdef __cplusplus
extern "C" {
#endif
STDAPI_(void) OleStdInitialize(HINSTANCE hInstance, HINSTANCE hResInstance);
// Clipboard Copy/Paste & Drag/Drop support support
// Clipboard format strings
#define CF_EMBEDSOURCE TEXT("Embed Source")
#define CF_EMBEDDEDOBJECT TEXT("Embedded Object")
#define CF_LINKSOURCE TEXT("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 CF_FILENAMEW TEXT("FileNameW")
// Other useful defines
#define HIMETRIC_PER_INCH 2540 // number HIMETRIC units per inch
#define MAP_LOGHIM_TO_PIX(x,ppli) MulDiv((ppli), (x), HIMETRIC_PER_INCH)
/****** DEBUG Support *****************************************************/
#ifdef _DEBUG
#ifndef _DBGTRACE
#define _DEBUGLEVEL 2
#else
#define _DEBUGLEVEL _DBGTRACE
#endif
#ifdef NOASSERT
#define OLEDBGASSERTDATA
#define OleDbgAssert(a)
#define OleDbgAssertSz(a, b)
#define OleDbgVerify(a)
#define OleDbgVerifySz(a, b)
#else // ! NOASSERT
STDAPI OleStdAssert(LPTSTR lpstrExpr, LPTSTR lpstrMsg,
LPTSTR lpstrFileName, UINT iLine);
#define OLEDBGASSERTDATA \
static TCHAR _szAssertFile[]= TEXT(__FILE__);
#define OleDbgAssert(a) \
(!(a) ? OleStdAssert(TEXT(#a), NULL, _szAssertFile, __LINE__) : (HRESULT)1)
#define OleDbgAssertSz(a, b) \
(!(a) ? OleStdAssert(TEXT(#a), b, _szAssertFile, __LINE__) : (HRESULT)1)
#endif
#define OleDbgVerify(a) \
OleDbgAssert(a)
#define OleDbgVerifySz(a, b) \
OleDbgAssertSz(a, b)
#define OLEDBGDATA_MAIN(szPrefix) \
TCHAR g_szDbgPrefix[] = szPrefix; \
OLEDBGASSERTDATA
#define OLEDBGDATA \
extern TCHAR g_szDbgPrefix[]; \
OLEDBGASSERTDATA
#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.CPP
STDAPI_(int) XformWidthInHimetricToPixels(HDC, int);
STDAPI_(int) XformHeightInHimetricToPixels(HDC, int);
STDAPI_(BOOL) OleStdIsOleLink(LPUNKNOWN lpUnk);
STDAPI_(LPUNKNOWN) OleStdQueryInterface(LPUNKNOWN lpUnk, REFIID riid);
STDAPI_(HGLOBAL) OleStdGetData(
LPDATAOBJECT lpDataObj,
CLIPFORMAT cfFormat,
DVTARGETDEVICE FAR* lpTargetDevice,
DWORD dwAspect,
LPSTGMEDIUM lpMedium
);
STDAPI_(void) OleStdMarkPasteEntryList(
LPDATAOBJECT lpSrcDataObj,
LPOLEUIPASTEENTRY lpPriorityList,
int cEntries
);
STDAPI_(HGLOBAL) OleStdGetObjectDescriptorData(
CLSID clsid,
DWORD dwAspect,
SIZEL sizel,
POINTL pointl,
DWORD dwStatus,
LPTSTR lpszFullUserTypeName,
LPTSTR lpszSrcOfCopy
);
STDAPI_(HGLOBAL) OleStdFillObjectDescriptorFromData(
LPDATAOBJECT lpDataObject,
LPSTGMEDIUM lpmedium,
CLIPFORMAT FAR* lpcfFmt
);
STDAPI_(LPVOID) OleStdMalloc(ULONG ulSize);
STDAPI_(LPVOID) OleStdRealloc(LPVOID pmem, ULONG ulSize);
STDAPI_(void) OleStdFree(LPVOID pmem);
STDAPI_(ULONG) OleStdGetSize(LPVOID pmem);
STDAPI_(LPTSTR) OleStdCopyString(LPTSTR lpszSrc);
STDAPI_(LPTSTR) OleStdLoadString(HINSTANCE hInst, UINT nID);
STDAPI_(ULONG) OleStdRelease(LPUNKNOWN lpUnk);
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);
#ifdef __cplusplus
}
#endif
#define ATOW(wsz, sz, cch) MultiByteToWideChar(CP_ACP, 0, sz, -1, wsz, cch)
#define WTOA(sz, wsz, cch) WideCharToMultiByte(CP_ACP, 0, wsz, -1, sz, cch, NULL, NULL)
#define ATOWLEN(sz) MultiByteToWideChar(CP_ACP, 0, sz, -1, NULL, 0)
#define WTOALEN(wsz) WideCharToMultiByte(CP_ACP, 0, wsz, -1, NULL, 0, NULL, NULL)
#endif // _OLESTD_H_