329 lines
10 KiB
C
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_
|