#ifndef _OFFGLUE_H_ #define _OFFGLUE_H_ #define fTrue TRUE #define fFalse FALSE #define MsoImageList_Create ImageList_Create #define MsoImageList_Destroy ImageList_Destroy #define MsoImageList_ReplaceIcon ImageList_ReplaceIcon #define InvalidateVBAObjects(x,y,z) typedef struct _num { CHAR rgb[8]; } NUM; typedef struct _ulargeint { union { struct { DWORD dw; DWORD dwh; }; struct { WORD w0; WORD w1; WORD w2; WORD w3; }; }; } ULInt; // Macro to release a COM interface #define RELEASEINTERFACE( punk ) \ if( punk != NULL ) \ { \ (punk)->lpVtbl->Release(punk); \ punk = NULL; \ } // Determine the elements in a fixed-sized vector #define NUM_ELEMENTS( vector ) ( sizeof(vector) / sizeof( (vector)[0] ) ) #ifdef __cplusplus extern TEXT("C") { #endif // __cplusplus //Wrapper functions to the client supplied mem alloc and free void *PvMemAlloc(DWORD cb); void VFreeMemP(void *pv, DWORD cb); void *PvMemRealloc(void *pv, DWORD cbOld, DWORD cbNew); void *PvStrDup(LPCTSTR p); int CchGetString(); // Function to convert a ULInt to an sz without leading zero's // Returns cch -- not including zero-terminator WORD CchULIntToSz(ULInt, TCHAR *, WORD ); int CchTszLen(const TCHAR *psz); int CchWszLen(const WCHAR *psz); int CchAnsiSzLen(const CHAR *psz); VOID FillBuf(void *p, unsigned w, unsigned cb); // Function to scan memory for a given value BOOL FScanMem(LPBYTE pb, byte bVal, DWORD cb); BYTE *PbMemCopy(void *pvDst, const void *pvSrc, unsigned cb); VOID SzCopy(void *pszDst, const void *pszSrc); BYTE *PbSzNCopy(void *pvDst, const void *pvSrc, unsigned cb); BOOL FFreeAndCloseisdbhead(); //Displays an alert using the give ids int IdDoAlert(HWND, int ids, int mb); // Wide-Char - MBCS helpers LPWSTR WINAPI A2WHelper(LPWSTR lpw, LPCSTR lpa, int nChars); LPSTR WINAPI W2AHelper(LPSTR lpa, LPCWSTR lpw, int nChars); #ifdef __cplusplus }; // extern "C" #endif // __cplusplus // Wide-Char - MBCS helpers #define USES_CONVERSION int _convert = 0 #ifndef A2WHELPER #define A2WHELPER A2WHelper #define W2AHELPER W2AHelper #endif #define A2W(lpa) (\ ((LPCSTR)lpa == NULL) ? NULL : ( _convert = (lstrlenA(lpa)+1),\ A2WHELPER((LPWSTR) alloca(_convert*2), lpa, _convert))) #define W2A(lpw) (\ ((LPCWSTR)lpw == NULL) ? NULL : ( _convert = (lstrlenW(lpw)+1)*2,\ W2AHELPER((LPSTR) alloca(_convert), lpw, _convert))) #define A2CW(lpa) ((LPCWSTR)A2W(lpa)) #define W2CA(lpw) ((LPCSTR)W2A(lpw)) #ifdef _UNICODE #define T2A W2A #define A2T A2W #define T2W(lp) lp #define W2T(lp) lp #define T2CA W2CA #define A2CT A2CW #define T2CW(lp) lp #define W2CT(lp) lp #else #define T2W A2W #define W2T W2A #define T2A(lp) lp #define A2T(lp) lp #define T2CW A2CW #define W2CT W2CA #define T2CA(lp) lp #define A2CT(lp) lp #endif // _UNICODE #endif // _OFFGLUE_H_