/************************************************************************* ** ** 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 // needed for LPPRINTDLG #include // needed for HKEY #include // 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_