/*
* ansiapi.h
* This file contains prototypes of ANSI version of OLE apis
* and mapping fooA to foo
*/
#ifndef _ANSIAPI_INCL
#define _ANSIAPI_INCL
#define UNICODEOLE32
#ifdef WIN32S
#if !defined(UNICODEOLE32)
#pragma message("Compiling for 32bit ANSI Ole!\n");
#endif
#endif
#define WASANSI() { \
OutputDebugString("\n\r\t\tUnicode string was ANSI!\r\n"); \
Assert(0); \
_asm { int 3 } \
}
#ifndef UNICODEOLE32
#define W2A(w, a, cb) lstrcpy (a, w)
#define A2W(a, w, cb) lstrcpy (w, a)
#define FREELOCALSTRING(p)
#define MAKE_STR_LOCAL_COPYW2A(s, l) l = s
#define MAKE_STR_LOCAL_COPYA2W(s, l) l = s
#define OLESTRCPY lstrcpy
#define OLESTRCAT lstrcat
#define OLESTRLEN lstrlen
#define OLESTRCMP lstrcmp
#define DeleteFile_AW DeleteFile
#define _lopen_AW _lopen
#define _lcreat_AW _lcreat
#define GlobalAddAtom_AW GlobalAddAtom
#define GlobalGetAtomName_AW GlobalGetAtomName
#define RegOpenKey_AW RegOpenKey
#define CoLoadLibraryA CoLoadLibrary
#define StringFromCLSID2A StringFromCLSID2
#define StringFromIID2A StringFromIID2
#define StringFromGUID2A StringFromGUID2
#define CLSIDFromProgIDA CLSIDFromProgID
#define CLSIDFromStringA CLSIDFromString
#define ProgIDFromCLSIDA ProgIDFromCLSID
#define StringFromCLSIDA StringFromCLSID
#define UtDupStringA2W UtDupString
// Storage APIs
#define StgOpenStorageA StgOpenStorage
// IPersistFile ansi translation
#define IPersistFile_LoadA(pf, file, mode) (pf)->Load(file, mode)
// IMoniker ansi translation
#define IMoniker_GetDisplayNameA(pm, p1, p2, p3) (pm)->GetDisplayName(p1,p2,p3)
#define CreateFileMonikerA CreateFileMoniker
#else // UNICODEOLE32
#define W2A(w, a, cb) WideCharToMultiByte( \
CP_ACP, \
0, \
w, \
-1, \
a, \
cb, \
NULL, \
NULL)
#define A2W(a, w, cb) MultiByteToWideChar( \
CP_ACP, \
0, \
a, \
-1, \
w, \
cb)
#define FREELOCALSTRING(p) delete (p)
#define MAKE_STR_LOCAL_COPYW2A(s, l) { \
l = UtDupStringW2A(s); \
if (!l) { \
return ResultFromScode(S_OOM); \
} \
}
#define MAKE_STR_LOCAL_COPYA2W(s, l) { \
l = UtDupStringA2W(s); \
if (!l) { \
return ResultFromScode(S_OOM); \
} \
}
#define OLESTRCPY wcscpy
#define OLESTRCAT wcscat
#define OLESTRLEN wcslen
#define OLESTRCMP wcscmp
#define DeleteFile_AW DeleteFileW
#define _lopen_AW _lopenW
#define _lcreat_AW _lcreatW
#define GlobalAddAtom_AW GlobalAddAtomW
#define GlobalGetAtomName_AW GlobalGetAtomNameW
#define RegOpenKey_AW RegOpenKeyW
//STDAPI_(HINSTANCE) CoLoadLibraryA(LPSTR lpszLibName, BOOL bAutoFree);
#define StringFromCLSID2A(rclsid, lpsz, cbMax) \
StringFromGUID2A(rclsid, lpsz, cbMax)
#define StringFromIID2A(riid, lpsz, cbMax) \
StringFromGUID2A(riid, lpsz, cbMax)
//STDAPI_(int) StringFromGUID2A(REFGUID rguid, LPSTR lpsz, int cbMax);
//STDAPI CLSIDFromProgIDA(LPCSTR szProgID, LPCLSID pclsid);
//STDAPI CLSIDFromStringA(LPSTR lpsz, LPCLSID lpclsid);
//STDAPI StringFromCLSIDA(REFCLSID rclsid, LPSTR FAR* lplpsz);
//STDAPI ProgIDFromCLSIDA (REFCLSID clsid, LPSTR FAR* lplpszProgID);
//LPWSTR UtDupStringA2W(LPCSTR pSrc);
//LPSTR UtDupStringW2A(LPCWSTR pSrc);
// Storage APIs
//STDAPI StgOpenStorageA(LPCSTR pwcsName,IStorage FAR *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage FAR * FAR *ppstgOpen);
// IPersistFile ansi translation
//HRESULT IPersistFile_LoadA(LPPERSISTFILE pIPF, LPSTR szFile, DWORD dwMode);
// IMoniker ansi translation
//HRESULT IMoniker_GetDisplayNameA(LPMONIKER pm, LPBC p1, LPMONIKER p2, LPSTR FAR *p3);
//OLEAPI CreateFileMonikerA ( LPSTR lpszPathName, LPMONIKER FAR * ppmk );
#endif // !UNICODEOLE32
#endif // _ANSIAPI_INCL