// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1995 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #ifdef AFX_INIT_SEG #pragma code_seg(AFX_INIT_SEG) #endif #ifdef _AFXDLL #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // Win32 function loader helpers // inline functions for loading the DLLs inline HINSTANCE AfxLoadOle(FARPROC* proc, LPCSTR lpsz) { return AfxLoadDll(_afxOleState->m_hInstOLE, "OLE32.DLL", proc, lpsz); } inline HINSTANCE AfxLoadOleAut(FARPROC* proc, LPCSTR lpsz) { return AfxLoadDll(_afxOleState->m_hInstOLEAUT, "OLEAUT32.DLL", proc, lpsz); } inline HINSTANCE AfxLoadOleDlg(FARPROC* proc, LPCSTR lpsz) { return AfxLoadDll(_afxOleState->m_hInstOLEDLG, "OLEDLG.DLL", proc, lpsz); } // non-mapped ole loading macros #define OLELOAD(x) \ AfxLoadOle((FARPROC*)_afxOLE.pfn##x, #x) #define OLEAUTLOAD(x) \ AfxLoadOleAut((FARPROC*)_afxOLE.pfn##x, #x) #ifdef _UNICODE #define OLEDLGLOADT(x) \ AfxLoadOleDlg((FARPROC*)_afxOLE.pfn##x, #x "W") #else #define OLEDLGLOADT(x) \ AfxLoadOleDlg((FARPROC*)_afxOLE.pfn##x, #x "A") #endif #define OLEDLGLOAD(x) \ AfxLoadOleDlg((FARPROC*)_afxOLE.pfn##x, #x) // mapped (for mac) do not need special mapping on Win32 platforms #define OLELOAD_M1(x) \ AfxLoadOle((FARPROC*)_afxOLE.pfn##x, #x) #define OLELOAD_M2(x) \ AfxLoadOle((FARPROC*)_afxOLE.pfn##x, #x) #define OLEAUTLOAD_M1(x) \ AfxLoadOleAut((FARPROC*)_afxOLE.pfn##x, #x) #else //_MAC ///////////////////////////////////////////////////////////////////////////// // _MAC function loader helpers // inline functions for loading the DLLs inline HINSTANCE AfxLoadOle(FARPROC* proc, LPCSTR lpsz) { return AfxLoadDll(_afxOleState->m_hInstOLE, "Microsoft_OLE2", proc, lpsz); } inline HINSTANCE AfxLoadWlmOle(FARPROC* proc, LPCSTR lpsz) #ifdef _DEBUG { return AfxLoadDll(_afxOleState->m_hInstWLMOLE, "DebugMicrosoftOLEPortabilityLib", proc, lpsz); } #else { return AfxLoadDll(_afxOleState->m_hInstWLMOLE, "MicrosoftOLEPortabilityLib", proc, lpsz); } #endif inline HINSTANCE AfxLoadOleAut(FARPROC* proc, LPCSTR lpsz) { return AfxLoadDll(_afxOleState->m_hInstOLEAUT, "MicrosoftOLE2AutomationLib", proc, lpsz); } inline HINSTANCE AfxLoadOleDlg(FARPROC* proc, LPCSTR lpsz) #ifdef _DEBUG { return AfxLoadDll(_afxOleState->m_hInstOLEDLG, "DebugMicrosoftOLEUIPortabilityLib", proc, lpsz); } #else { return AfxLoadDll(_afxOleState->m_hInstOLEDLG, "MicrosoftOLEUIPortabilityLib", proc, lpsz); } #endif // non-mapped ole loading macros #define OLELOAD(x) \ AfxLoadOle((FARPROC*)_afxOLE.pfn##x, #x) #define OLEAUTLOAD(x) \ AfxLoadOleAut((FARPROC*)_afxOLE.pfn##x, #x) #define OLEDLGLOADT(x) \ AfxLoadOleDlg((FARPROC*)_afxOLE.pfn##x, #x) // mapped (for mac) do not need special mapping on Win32 platforms #define OLELOAD_M1(x) \ AfxLoadWlmOle((FARPROC*)_afxOLE.pfn##x, "WlmOle" #x) #define OLELOAD_M2(x) \ AfxLoadWlmOle((FARPROC*)_afxOLE.pfn##x, #x) #define OLEAUTLOAD_M1(x) \ AfxLoadWlmOle((FARPROC*)_afxOLE.pfn##x, "WlmOle" #x) #define REGLOAD_M(x) \ AfxLoadWlmOle((FARPROC*)_afxOLE.pfn##x, #x) #endif /////////////////////////////////////////////////////////////////////////////// // OLEAUT32 void STDAPICALLTYPE AfxThunkSysFreeString(BSTR bstr) { OLEAUTLOAD(SysFreeString); _afxOLE.pfnSysFreeString[1](bstr); } BSTR STDAPICALLTYPE AfxThunkSysAllocStringByteLen(const char FAR* psz, unsigned int len) { OLEAUTLOAD(SysAllocStringByteLen); return _afxOLE.pfnSysAllocStringByteLen[1](psz, len); } HRESULT STDAPICALLTYPE AfxThunkVariantCopy(VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvargSrc) { OLEAUTLOAD(VariantCopy); return _afxOLE.pfnVariantCopy[1](pvargDest, pvargSrc); } HRESULT STDAPICALLTYPE AfxThunkVariantClear(VARIANTARG FAR* pvarg) { OLEAUTLOAD(VariantClear); return _afxOLE.pfnVariantClear[1](pvarg); } HRESULT STDAPICALLTYPE AfxThunkVariantChangeType(VARIANTARG FAR* pvargDest, VARIANTARG FAR* pvarSrc, unsigned short wFlags, VARTYPE vt) { OLEAUTLOAD(VariantChangeType); return _afxOLE.pfnVariantChangeType[1](pvargDest, pvarSrc, wFlags, vt); } BSTR STDAPICALLTYPE AfxThunkSysAllocStringLen(const OLECHAR FAR* psz, unsigned int len) { OLEAUTLOAD(SysAllocStringLen); return _afxOLE.pfnSysAllocStringLen[1](psz, len); } unsigned int STDAPICALLTYPE AfxThunkSysStringLen(BSTR bstr) { OLEAUTLOAD(SysStringLen); return _afxOLE.pfnSysStringLen[1](bstr); } int STDAPICALLTYPE AfxThunkSysReAllocStringLen(BSTR FAR* pbstr, const OLECHAR FAR* psz, unsigned int len) { OLEAUTLOAD(SysReAllocStringLen); return _afxOLE.pfnSysReAllocStringLen[1](pbstr, psz, len); } BSTR STDAPICALLTYPE AfxThunkSysAllocString(const OLECHAR FAR* psz) { OLEAUTLOAD(SysAllocString); return _afxOLE.pfnSysAllocString[1](psz); } unsigned int STDAPICALLTYPE AfxThunkSysStringByteLen(BSTR bstr) { OLEAUTLOAD(SysStringByteLen); return _afxOLE.pfnSysStringByteLen[1](bstr); } HRESULT STDAPICALLTYPE AfxThunkVarCyFromStr(OLECHAR FAR* strIn, LCID lcid, unsigned long dwFlags, CY FAR* pcyOut) { OLEAUTLOAD(VarCyFromStr); return _afxOLE.pfnVarCyFromStr[1](strIn, lcid, dwFlags, pcyOut); } HRESULT STDAPICALLTYPE AfxThunkVarBstrFromCy(CY cyIn, LCID lcid, unsigned long dwFlags, BSTR FAR* pbstrOut) { OLEAUTLOAD(VarBstrFromCy); return _afxOLE.pfnVarBstrFromCy[1](cyIn, lcid, dwFlags, pbstrOut); } HRESULT STDAPICALLTYPE AfxThunkVarDateFromStr(OLECHAR FAR* strIn, LCID lcid, unsigned long dwFlags, DATE FAR* pdateOut) { OLEAUTLOAD(VarDateFromStr); return _afxOLE.pfnVarDateFromStr[1](strIn, lcid, dwFlags, pdateOut); } HRESULT STDAPICALLTYPE AfxThunkVarBstrFromDate(DATE dateIn, LCID lcid, unsigned long dwFlags, BSTR FAR* pbstrOut) { OLEAUTLOAD(VarBstrFromDate); return _afxOLE.pfnVarBstrFromDate[1](dateIn, lcid, dwFlags, pbstrOut); } HRESULT STDAPICALLTYPE AfxThunkLoadTypeLib(const OLECHAR FAR *szFile, ITypeLib FAR* FAR* pptlib) { OLEAUTLOAD_M1(LoadTypeLib); return _afxOLE.pfnLoadTypeLib[1](szFile, pptlib); } HRESULT STDAPICALLTYPE AfxThunkRegisterTypeLib(ITypeLib FAR* ptlib, OLECHAR FAR *szFullPath, OLECHAR FAR *szHelpDir) { OLEAUTLOAD(RegisterTypeLib); return _afxOLE.pfnRegisterTypeLib[1](ptlib, szFullPath, szHelpDir); } int STDAPICALLTYPE AfxThunkDosDateTimeToVariantTime(unsigned short wDosDate, unsigned short wDosTime, double FAR* pvtime) { OLEAUTLOAD(DosDateTimeToVariantTime); return _afxOLE.pfnDosDateTimeToVariantTime[1](wDosDate, wDosTime, pvtime); } SAFEARRAY FAR* STDAPICALLTYPE AfxThunkSafeArrayCreate(VARTYPE vt, unsigned int cDims, SAFEARRAYBOUND FAR* rgsabound) { OLEAUTLOAD(SafeArrayCreate); return _afxOLE.pfnSafeArrayCreate[1](vt, cDims, rgsabound); } HRESULT STDAPICALLTYPE AfxThunkSafeArrayRedim(SAFEARRAY FAR* psa, SAFEARRAYBOUND FAR* psaboundNew) { OLEAUTLOAD(SafeArrayRedim); return _afxOLE.pfnSafeArrayRedim[1](psa, psaboundNew); } HRESULT STDAPICALLTYPE AfxThunkSafeArrayAccessData(SAFEARRAY FAR* psa, void HUGEP* FAR* ppvData) { OLEAUTLOAD(SafeArrayAccessData); return _afxOLE.pfnSafeArrayAccessData[1](psa, ppvData); } HRESULT STDAPICALLTYPE AfxThunkSafeArrayUnaccessData(SAFEARRAY FAR* psa) { OLEAUTLOAD(SafeArrayUnaccessData); return _afxOLE.pfnSafeArrayUnaccessData[1](psa); } HRESULT STDAPICALLTYPE AfxThunkSafeArrayGetUBound(SAFEARRAY FAR* psa, unsigned int nDim, long FAR* plUbound) { OLEAUTLOAD(SafeArrayGetUBound); return _afxOLE.pfnSafeArrayGetUBound[1](psa, nDim, plUbound); } HRESULT STDAPICALLTYPE AfxThunkSafeArrayGetLBound(SAFEARRAY FAR* psa, unsigned int nDim, long FAR* plLbound) { OLEAUTLOAD(SafeArrayGetLBound); return _afxOLE.pfnSafeArrayGetLBound[1](psa, nDim, plLbound); } unsigned int STDAPICALLTYPE AfxThunkSafeArrayGetElemsize(SAFEARRAY FAR* psa) { OLEAUTLOAD(SafeArrayGetElemsize); return _afxOLE.pfnSafeArrayGetElemsize[1](psa); } unsigned int STDAPICALLTYPE AfxThunkSafeArrayGetDim(SAFEARRAY FAR* psa) { OLEAUTLOAD(SafeArrayGetDim); return _afxOLE.pfnSafeArrayGetDim[1](psa); } /////////////////////////////////////////////////////////////////////////////// // OLEDLG BOOL STDAPICALLTYPE AfxThunkOleUIAddVerbMenu(LPOLEOBJECT lpOleObj, LPCTSTR lpszShortType, HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax, BOOL bAddConvert, UINT idConvert, HMENU FAR *lphMenu) { OLEDLGLOADT(OleUIAddVerbMenu); return _afxOLE.pfnOleUIAddVerbMenu[1](lpOleObj, lpszShortType, hMenu, uPos, uIDVerbMin, uIDVerbMax, bAddConvert, idConvert, lphMenu); } UINT STDAPICALLTYPE AfxThunkOleUIBusy(LPOLEUIBUSY lp) { OLEDLGLOADT(OleUIBusy); return _afxOLE.pfnOleUIBusy[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIChangeIcon(LPOLEUICHANGEICON lp) { OLEDLGLOADT(OleUIChangeIcon); return _afxOLE.pfnOleUIChangeIcon[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIChangeSource(LPOLEUICHANGESOURCE lp) { OLEDLGLOADT(OleUIChangeSource); return _afxOLE.pfnOleUIChangeSource[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIConvert(LPOLEUICONVERT lp) { OLEDLGLOADT(OleUIConvert); return _afxOLE.pfnOleUIConvert[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIEditLinks(LPOLEUIEDITLINKS lp) { OLEDLGLOADT(OleUIEditLinks); return _afxOLE.pfnOleUIEditLinks[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIInsertObject(LPOLEUIINSERTOBJECT lp) { OLEDLGLOADT(OleUIInsertObject); return _afxOLE.pfnOleUIInsertObject[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIObjectProperties(LPOLEUIOBJECTPROPS lp) { OLEDLGLOADT(OleUIObjectProperties); return _afxOLE.pfnOleUIObjectProperties[1](lp); } UINT STDAPICALLTYPE AfxThunkOleUIPasteSpecial(LPOLEUIPASTESPECIAL lp) { OLEDLGLOADT(OleUIPasteSpecial); return _afxOLE.pfnOleUIPasteSpecial[1](lp); } BOOL STDAPICALLTYPE AfxThunkOleUIUpdateLinks(LPOLEUILINKCONTAINER lpOleUILinkCntr, HWND hwndParent, LPTSTR lpszTitle, int cLinks) { OLEDLGLOADT(OleUIUpdateLinks); return _afxOLE.pfnOleUIUpdateLinks[1](lpOleUILinkCntr, hwndParent, lpszTitle, cLinks); } ///////////////////////////////////////////////////////////////////////////// // Special Mac registry APIs #ifdef _MAC LONG APIENTRY AfxThunkRegCloseKey(HKEY hKey) { REGLOAD_M(AfxRegCloseKey); return _afxOLE.pfnAfxRegCloseKey[1](hKey); } LONG APIENTRY AfxThunkRegOpenKey(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult) { REGLOAD_M(RegOpenKey); return _afxOLE.pfnRegOpenKey[1](hKey, lpSubKey, phkResult); } LONG APIENTRY AfxThunkRegSetValue(HKEY hKey, LPCSTR lpSubKey, DWORD dwType, LPCSTR lpData, DWORD cbData) { REGLOAD_M(RegSetValue); return _afxOLE.pfnRegSetValue[1](hKey, lpSubKey, dwType, lpData, cbData); } LONG APIENTRY AfxThunkRegQueryValue(HKEY hKey, LPCSTR lpSubKey, LPSTR lpValue, PLONG lpcbValue) { REGLOAD_M(RegQueryValue); return _afxOLE.pfnRegQueryValue[1](hKey, lpSubKey, lpValue, lpcbValue); } #endif /////////////////////////////////////////////////////////////////////////////// // OLE32 HRESULT STDAPICALLTYPE AfxThunkReadFmtUserTypeStg(LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPOLESTR FAR* lplpszUserType) { OLELOAD_M1(ReadFmtUserTypeStg); return _afxOLE.pfnReadFmtUserTypeStg[1](pstg, pcf, lplpszUserType); } HRESULT STDAPICALLTYPE AfxThunkReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid) { OLELOAD_M1(ReadClassStg); return _afxOLE.pfnReadClassStg[1](pStg, pclsid); } HRESULT STDAPICALLTYPE AfxThunkCreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER FAR* ppmk) { OLELOAD_M1(CreateFileMoniker); return _afxOLE.pfnCreateFileMoniker[1](lpszPathName, ppmk); } HRESULT STDAPICALLTYPE AfxThunkStgIsStorageFile(const OLECHAR * pwcsName) { OLELOAD_M1(StgIsStorageFile); return _afxOLE.pfnStgIsStorageFile[1](pwcsName); } HRESULT STDAPICALLTYPE AfxThunkStgOpenStorage(const OLECHAR * pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage ** ppstgOpen) { OLELOAD_M1(StgOpenStorage); return _afxOLE.pfnStgOpenStorage[1](pwcsName, pstgPriority, grfMode, snbExclude, reserved, ppstgOpen); } HRESULT STDAPICALLTYPE AfxThunkDoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource, DWORD dwOKEffects, LPDWORD pdwEffect) { OLELOAD_M1(DoDragDrop); return _afxOLE.pfnDoDragDrop[1](pDataObj, pDropSource, dwOKEffects, pdwEffect); } HRESULT STDAPICALLTYPE AfxThunkCoLockObjectExternal(LPUNKNOWN pUnk, BOOL fLock, BOOL fLastUnlockReleases) { OLELOAD_M1(CoLockObjectExternal); return _afxOLE.pfnCoLockObjectExternal[1](pUnk, fLock, fLastUnlockReleases); } HRESULT STDAPICALLTYPE AfxThunkRegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget) { OLELOAD_M1(RegisterDragDrop); return _afxOLE.pfnRegisterDragDrop[1](hwnd, pDropTarget); } HRESULT STDAPICALLTYPE AfxThunkOleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType, LPOLESTR * pszUserType) { OLELOAD(OleRegGetUserType); return _afxOLE.pfnOleRegGetUserType[1](clsid, dwFormOfType, pszUserType); } HRESULT STDAPICALLTYPE AfxThunkStgCreateDocfile(const OLECHAR * pwcsName, DWORD grfMode, DWORD reserved, IStorage** ppstgOpen) { OLELOAD_M1(StgCreateDocfile); return _afxOLE.pfnStgCreateDocfile[1](pwcsName, grfMode, reserved, ppstgOpen); } HRESULT STDAPICALLTYPE AfxThunkRevokeDragDrop(HWND hwnd) { OLELOAD_M1(RevokeDragDrop); return _afxOLE.pfnRevokeDragDrop[1](hwnd); } HRESULT STDAPICALLTYPE AfxThunkCoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister) { OLELOAD_M1(CoRegisterClassObject); return _afxOLE.pfnCoRegisterClassObject[1](rclsid, pUnk, dwClsContext, flags, lpdwRegister); } HRESULT STDAPICALLTYPE AfxThunkCoRevokeClassObject(DWORD dwRegister) { OLELOAD_M1(CoRevokeClassObject); return _afxOLE.pfnCoRevokeClassObject[1](dwRegister); } HRESULT STDAPICALLTYPE AfxThunkOleTranslateAccelerator(LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg) { OLELOAD_M1(OleTranslateAccelerator); return _afxOLE.pfnOleTranslateAccelerator[1](lpFrame, lpFrameInfo, lpmsg); } BOOL STDAPICALLTYPE AfxThunkIsAccelerator(HACCEL hAccel, INT cAccelEntries, LPMSG lpMsg, WORD* lpwCmd) { OLELOAD_M1(IsAccelerator); return _afxOLE.pfnIsAccelerator[1](hAccel, cAccelEntries, lpMsg, lpwCmd); } HOLEMENU STDAPICALLTYPE AfxThunkOleCreateMenuDescriptor(HMENU hmenuCombined, LPOLEMENUGROUPWIDTHS lpMenuWidths) { OLELOAD_M2(OleCreateMenuDescriptor); return _afxOLE.pfnOleCreateMenuDescriptor[1](hmenuCombined, lpMenuWidths); } HRESULT STDAPICALLTYPE AfxThunkOleDestroyMenuDescriptor(HOLEMENU holemenu) { OLELOAD_M2(OleDestroyMenuDescriptor); return _afxOLE.pfnOleDestroyMenuDescriptor[1](holemenu); } HRESULT STDAPICALLTYPE AfxThunkGetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE FAR* pprot) { OLELOAD_M1(GetRunningObjectTable); return _afxOLE.pfnGetRunningObjectTable[1](reserved, pprot); } HRESULT STDAPICALLTYPE AfxThunkWriteClassStg(LPSTORAGE pStg, REFCLSID rclsid) { OLELOAD_M1(WriteClassStg); return _afxOLE.pfnWriteClassStg[1](pStg, rclsid); } HRESULT STDAPICALLTYPE AfxThunkOleQueryLinkFromData(LPDATAOBJECT pSrcDataObject) { OLELOAD_M1(OleQueryLinkFromData); return _afxOLE.pfnOleQueryLinkFromData[1](pSrcDataObject); } HRESULT STDAPICALLTYPE AfxThunkCoRegisterMessageFilter(LPMESSAGEFILTER lpMessageFilter, LPMESSAGEFILTER * lplpMessageFilter) { OLELOAD_M1(CoRegisterMessageFilter); return _afxOLE.pfnCoRegisterMessageFilter[1](lpMessageFilter, lplpMessageFilter); } HRESULT STDAPICALLTYPE AfxThunkCoCreateInstance(REFCLSID rclsid, LPUNKNOWN * pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID* ppv) { OLELOAD_M1(CoCreateInstance); return _afxOLE.pfnCoCreateInstance[1](rclsid, pUnkOuter, dwClsContext, riid, ppv); } HRESULT STDAPICALLTYPE AfxThunkCreateBindCtx(DWORD reserved, LPBC FAR* ppbc) { OLELOAD_M1(CreateBindCtx); return _afxOLE.pfnCreateBindCtx[1](reserved, ppbc); } HRESULT STDAPICALLTYPE AfxThunkStringFromCLSID(REFCLSID rclsid, LPOLESTR FAR* lplpsz) { OLELOAD(StringFromCLSID); return _afxOLE.pfnStringFromCLSID[1](rclsid, lplpsz); } HRESULT STDAPICALLTYPE AfxThunkCoDisconnectObject(LPUNKNOWN pUnk, DWORD dwReserved) { OLELOAD_M1(CoDisconnectObject); return _afxOLE.pfnCoDisconnectObject[1](pUnk, dwReserved); } HRESULT STDAPICALLTYPE AfxThunkOleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum) { OLELOAD_M1(OleRegEnumVerbs); return _afxOLE.pfnOleRegEnumVerbs[1](clsid, ppenum); } void STDAPICALLTYPE AfxThunkOleUninitialize(void) { OLELOAD_M1(OleUninitialize); _afxOLE.pfnOleUninitialize[1](); } HRESULT STDAPICALLTYPE AfxThunkCreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder) { OLELOAD_M1(CreateOleAdviseHolder); return _afxOLE.pfnCreateOleAdviseHolder[1](ppOAHolder); } HRESULT STDAPICALLTYPE AfxThunkCreateDataAdviseHolder(LPDATAADVISEHOLDER FAR* ppDAHolder) { OLELOAD_M1(CreateDataAdviseHolder); return _afxOLE.pfnCreateDataAdviseHolder[1](ppDAHolder); } HRESULT STDAPICALLTYPE AfxThunkOleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew) { OLELOAD(OleGetAutoConvert); return _afxOLE.pfnOleGetAutoConvert[1](clsidOld, pClsidNew); } HRESULT STDAPICALLTYPE AfxThunkCoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID* ppv) { OLELOAD_M1(CoGetClassObject); return _afxOLE.pfnCoGetClassObject[1](rclsid, dwClsContext, pvReserved, riid, ppv); } HRESULT STDAPICALLTYPE AfxThunkOleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID* lplpvObj) { OLELOAD_M1(OleCreateDefaultHandler); return _afxOLE.pfnOleCreateDefaultHandler[1](clsid, pUnkOuter, riid, lplpvObj); } HRESULT STDAPICALLTYPE AfxThunkCreateDataCache(LPUNKNOWN pUnkOuter, REFCLSID clsid, REFIID riid, LPVOID* lplpvObj) { OLELOAD_M1(CreateDataCache); return _afxOLE.pfnCreateDataCache[1](pUnkOuter, clsid, riid, lplpvObj); } HRESULT STDAPICALLTYPE AfxThunkReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid) { OLELOAD_M1(ReadClassStm); return _afxOLE.pfnReadClassStm[1](pStm, pclsid); } HRESULT STDAPICALLTYPE AfxThunkOleLoadFromStream(LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj) { OLELOAD_M1(OleLoadFromStream); return _afxOLE.pfnOleLoadFromStream[1](pStm, iidInterface, ppvObj); } int STDAPICALLTYPE AfxThunkStringFromGUID2(REFGUID rguid, LPOLESTR lpsz, int cbMax) { OLELOAD(StringFromGUID2); return _afxOLE.pfnStringFromGUID2[1](rguid, lpsz, cbMax); } void STDAPICALLTYPE AfxThunkCoUninitialize(void) { OLELOAD_M1(CoUninitialize); _afxOLE.pfnCoUninitialize[1](); } HRESULT STDAPICALLTYPE AfxThunkCoInitialize(LPVOID pvReserved) { OLELOAD_M1(CoInitialize); return _afxOLE.pfnCoInitialize[1](pvReserved); } HRESULT STDAPICALLTYPE AfxThunkOleInitialize(LPVOID pvReserved) { OLELOAD_M1(OleInitialize); return _afxOLE.pfnOleInitialize[1](pvReserved); } void STDAPICALLTYPE AfxThunkCoFreeUnusedLibraries(void) { OLELOAD(CoFreeUnusedLibraries); _afxOLE.pfnCoFreeUnusedLibraries[1](); } HRESULT STDAPICALLTYPE AfxThunkOleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreateFromData); return _afxOLE.pfnOleCreateFromData[1](pSrcDataObj, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained) { OLELOAD_M1(OleSetContainedObject); return _afxOLE.pfnOleSetContainedObject[1](pUnknown, fContained); } HRESULT STDAPICALLTYPE AfxThunkOleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses) { OLELOAD_M1(OleLockRunning); return _afxOLE.pfnOleLockRunning[1](pUnknown, fLock, fLastUnlockCloses); } LPVOID STDAPICALLTYPE AfxThunkCoTaskMemAlloc(ULONG cb) { OLELOAD_M1(CoTaskMemAlloc); return _afxOLE.pfnCoTaskMemAlloc[1](cb); } HRESULT STDAPICALLTYPE AfxThunkCLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid) { OLELOAD(CLSIDFromString); return _afxOLE.pfnCLSIDFromString[1](lpsz, pclsid); } HRESULT STDAPICALLTYPE AfxThunkCLSIDFromProgID (LPCOLESTR lpszProgID, LPCLSID lpclsid) { OLELOAD(CLSIDFromProgID); return _afxOLE.pfnCLSIDFromProgID[1](lpszProgID, lpclsid); } HRESULT STDAPICALLTYPE AfxThunkOleIsCurrentClipboard(LPDATAOBJECT pDataObj) { OLELOAD_M1(OleIsCurrentClipboard); return _afxOLE.pfnOleIsCurrentClipboard[1](pDataObj); } HRESULT STDAPICALLTYPE AfxThunkOleFlushClipboard(void) { OLELOAD_M1(OleFlushClipboard); return _afxOLE.pfnOleFlushClipboard[1](); } HRESULT STDAPICALLTYPE AfxThunkOleSetClipboard(LPDATAOBJECT pDataObj) { OLELOAD_M1(OleSetClipboard); return _afxOLE.pfnOleSetClipboard[1](pDataObj); } BOOL STDAPICALLTYPE AfxThunkOleIsRunning(LPOLEOBJECT pObject) { OLELOAD_M1(OleIsRunning); return _afxOLE.pfnOleIsRunning[1](pObject); } HRESULT STDAPICALLTYPE AfxThunkOleRun(LPUNKNOWN pUnknown) { OLELOAD_M1(OleRun); return _afxOLE.pfnOleRun[1](pUnknown); } HRESULT STDAPICALLTYPE AfxThunkOleGetClipboard(LPDATAOBJECT FAR* ppDataObj) { OLELOAD_M1(OleGetClipboard); return _afxOLE.pfnOleGetClipboard[1](ppDataObj); } HRESULT STDAPICALLTYPE AfxThunkCoTreatAsClass(REFCLSID clsidOld, REFCLSID clsidNew) { OLELOAD(CoTreatAsClass); return _afxOLE.pfnCoTreatAsClass[1](clsidOld, clsidNew); } HRESULT STDAPICALLTYPE AfxThunkOleQueryCreateFromData(LPDATAOBJECT pSrcDataObject) { OLELOAD_M1(OleQueryCreateFromData); return _afxOLE.pfnOleQueryCreateFromData[1](pSrcDataObject); } HRESULT STDAPICALLTYPE AfxThunkOleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame, HWND hwndActiveObject, LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEACTIVEOBJECT lpActiveObj) { OLELOAD_M2(OleSetMenuDescriptor); return _afxOLE.pfnOleSetMenuDescriptor[1](holemenu, hwndFrame, hwndActiveObject, lpFrame, lpActiveObj); } HRESULT STDAPICALLTYPE AfxThunkCreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk) { OLELOAD_M1(CreateItemMoniker); return _afxOLE.pfnCreateItemMoniker[1](lpszDelim, lpszItem, ppmk); } HRESULT STDAPICALLTYPE AfxThunkCreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite) { OLELOAD_M1(CreateGenericComposite); return _afxOLE.pfnCreateGenericComposite[1](pmkFirst, pmkRest, ppmkComposite); } HRESULT STDAPICALLTYPE AfxThunkCreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM* ppstm) { OLELOAD_M1(CreateStreamOnHGlobal); return _afxOLE.pfnCreateStreamOnHGlobal[1](hGlobal, fDeleteOnRelease, ppstm); } HRESULT STDAPICALLTYPE AfxThunkOleSaveToStream(LPPERSISTSTREAM pPStm, LPSTREAM pStm) { OLELOAD_M1(OleSaveToStream); return _afxOLE.pfnOleSaveToStream[1](pPStm, pStm); } HRESULT STDAPICALLTYPE AfxThunkWriteClassStm(LPSTREAM pStm, REFCLSID rclsid) { OLELOAD_M1(WriteClassStm); return _afxOLE.pfnWriteClassStm[1](pStm, rclsid); } void STDAPICALLTYPE AfxThunkCoTaskMemFree(LPVOID pv) { OLELOAD_M1(CoTaskMemFree); _afxOLE.pfnCoTaskMemFree[1](pv); } HGLOBAL STDAPICALLTYPE AfxThunkOleGetIconOfClass(REFCLSID rclsid, LPOLESTR lpszLabel, BOOL fUseTypeAsLabel) { OLELOAD_M1(OleGetIconOfClass); return _afxOLE.pfnOleGetIconOfClass[1](rclsid, lpszLabel, fUseTypeAsLabel); } void STDAPICALLTYPE AfxThunkReleaseStgMedium(LPSTGMEDIUM lp) { OLELOAD_M1(ReleaseStgMedium); _afxOLE.pfnReleaseStgMedium[1](lp); } HRESULT STDAPICALLTYPE AfxThunkGetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal) { OLELOAD_M1(GetHGlobalFromILockBytes); return _afxOLE.pfnGetHGlobalFromILockBytes[1](plkbyt, phglobal); } HRESULT STDAPICALLTYPE AfxThunkStgOpenStorageOnILockBytes(LPLOCKBYTES plkbyt, LPSTORAGE pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, LPSTORAGE* ppstgOpen) { OLELOAD_M1(StgOpenStorageOnILockBytes); return _afxOLE.pfnStgOpenStorageOnILockBytes[1](plkbyt, pstgPriority, grfMode, snbExclude, reserved, ppstgOpen); } HRESULT STDAPICALLTYPE AfxThunkCreateILockBytesOnHGlobal(HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPLOCKBYTES* pplkbyt) { OLELOAD_M1(CreateILockBytesOnHGlobal); return _afxOLE.pfnCreateILockBytesOnHGlobal[1](hGlobal, fDeleteOnRelease, pplkbyt); } HRESULT STDAPICALLTYPE AfxThunkStgCreateDocfileOnILockBytes(LPLOCKBYTES plkbyt, DWORD grfMode, DWORD reserved, LPSTORAGE* ppstgOpen) { OLELOAD_M1(StgCreateDocfileOnILockBytes); return _afxOLE.pfnStgCreateDocfileOnILockBytes[1](plkbyt, grfMode, reserved, ppstgOpen); } HRESULT STDAPICALLTYPE AfxThunkOleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad) { OLELOAD_M1(OleSave); return _afxOLE.pfnOleSave[1](pPS, pStg, fSameAsLoad); } HRESULT STDAPICALLTYPE AfxThunkOleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite, LPVOID* ppvObj) { OLELOAD_M1(OleLoad); return _afxOLE.pfnOleLoad[1](pStg, riid, pClientSite, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreate); return _afxOLE.pfnOleCreate[1](rclsid, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleCreateLinkToFile(LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreateLinkToFile); return _afxOLE.pfnOleCreateLinkToFile[1](lpszFileName, riid, renderopt, lpFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleCreateFromFile(REFCLSID rclsid, LPCOLESTR lpszFileName, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreateFromFile); return _afxOLE.pfnOleCreateFromFile[1](rclsid, lpszFileName, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreateStaticFromData); return _afxOLE.pfnOleCreateStaticFromData[1](pSrcDataObj, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkOleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID* ppvObj) { OLELOAD_M1(OleCreateLinkFromData); return _afxOLE.pfnOleCreateLinkFromData[1](pSrcDataObj, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj); } HRESULT STDAPICALLTYPE AfxThunkSetConvertStg(LPSTORAGE pStg, BOOL fConvert) { OLELOAD_M1(SetConvertStg); return _afxOLE.pfnSetConvertStg[1](pStg, fConvert); } HANDLE STDAPICALLTYPE AfxThunkOleDuplicateData(HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags) { OLELOAD_M1(OleDuplicateData); return _afxOLE.pfnOleDuplicateData[1](hSrc, cfFormat, uiFlags); } HRESULT STDAPICALLTYPE AfxThunkWriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType) { OLELOAD_M1(WriteFmtUserTypeStg); return _afxOLE.pfnWriteFmtUserTypeStg[1](pstg, cf, lpszUserType); } HRESULT STDAPICALLTYPE AfxThunkOleRegGetMiscStatus(REFCLSID clsid, DWORD dwAspect, DWORD* pdwStatus) { OLELOAD(OleRegGetMiscStatus); return _afxOLE.pfnOleRegGetMiscStatus[1](clsid, dwAspect, pdwStatus); } HRESULT STDAPICALLTYPE AfxThunkCoGetMalloc(DWORD dwMemContext, LPMALLOC * ppMalloc) { OLELOAD_M1(CoGetMalloc); return _afxOLE.pfnCoGetMalloc[1](dwMemContext, ppMalloc); } HRESULT STDAPICALLTYPE AfxThunkStgIsStorageILockBytes(LPLOCKBYTES plkbyt) { OLELOAD_M1(StgIsStorageILockBytes); return _afxOLE.pfnStgIsStorageILockBytes[1](plkbyt); } AFX_DATADEF AFX_OLE_CALL _afxOLE = { // OLE32.DLL entry points { AfxThunkReadFmtUserTypeStg, }, { AfxThunkReadClassStg, }, { AfxThunkCreateFileMoniker, }, { AfxThunkStgIsStorageFile, }, { AfxThunkStgOpenStorage, }, { AfxThunkDoDragDrop, }, { AfxThunkCoLockObjectExternal, }, { AfxThunkRegisterDragDrop, }, { AfxThunkOleRegGetUserType, }, { AfxThunkStgCreateDocfile, }, { AfxThunkRevokeDragDrop, }, { AfxThunkCoRegisterClassObject, }, { AfxThunkCoRevokeClassObject, }, { AfxThunkOleTranslateAccelerator, }, { AfxThunkIsAccelerator, }, { AfxThunkOleCreateMenuDescriptor, }, { AfxThunkOleDestroyMenuDescriptor, }, { AfxThunkGetRunningObjectTable, }, { AfxThunkWriteClassStg, }, { AfxThunkOleQueryLinkFromData, }, { AfxThunkCoRegisterMessageFilter, }, { AfxThunkCoCreateInstance, }, { AfxThunkCreateBindCtx, }, { AfxThunkStringFromCLSID, }, { AfxThunkCoDisconnectObject, }, { AfxThunkOleRegEnumVerbs, }, { AfxThunkOleUninitialize, }, { AfxThunkCreateOleAdviseHolder, }, { AfxThunkCreateDataAdviseHolder, }, { AfxThunkOleGetAutoConvert, }, { AfxThunkCoGetClassObject, }, { AfxThunkOleCreateDefaultHandler, }, { AfxThunkCreateDataCache, }, { AfxThunkReadClassStm, }, { AfxThunkOleLoadFromStream, }, { AfxThunkStringFromGUID2, }, { AfxThunkCoUninitialize, }, { AfxThunkCoInitialize, }, { AfxThunkOleInitialize, }, { AfxThunkCoFreeUnusedLibraries, }, { AfxThunkOleCreateFromData, }, { AfxThunkOleSetContainedObject, }, { AfxThunkOleLockRunning, }, { AfxThunkCoTaskMemAlloc, }, { AfxThunkCLSIDFromString, }, { AfxThunkCLSIDFromProgID, }, { AfxThunkOleIsCurrentClipboard, }, { AfxThunkOleFlushClipboard, }, { AfxThunkOleSetClipboard, }, { AfxThunkOleIsRunning, }, { AfxThunkOleRun, }, { AfxThunkOleGetClipboard, }, { AfxThunkCoTreatAsClass, }, { AfxThunkOleQueryCreateFromData, }, { AfxThunkOleSetMenuDescriptor, }, { AfxThunkCreateItemMoniker, }, { AfxThunkCreateGenericComposite, }, { AfxThunkCreateStreamOnHGlobal, }, { AfxThunkOleSaveToStream, }, { AfxThunkWriteClassStm, }, { AfxThunkCoTaskMemFree, }, { AfxThunkOleGetIconOfClass, }, { AfxThunkReleaseStgMedium, }, { AfxThunkGetHGlobalFromILockBytes, }, { AfxThunkStgOpenStorageOnILockBytes, }, { AfxThunkCreateILockBytesOnHGlobal, }, { AfxThunkStgCreateDocfileOnILockBytes, }, { AfxThunkOleSave, }, { AfxThunkOleLoad, }, { AfxThunkOleCreate, }, { AfxThunkOleCreateLinkToFile, }, { AfxThunkOleCreateFromFile, }, { AfxThunkOleCreateStaticFromData, }, { AfxThunkOleCreateLinkFromData, }, { AfxThunkSetConvertStg, }, { AfxThunkOleDuplicateData, }, { AfxThunkWriteFmtUserTypeStg, }, { AfxThunkOleRegGetMiscStatus, }, { AfxThunkCoGetMalloc, }, { AfxThunkStgIsStorageILockBytes, }, // OLEAUT32.DLL entry points { AfxThunkSysFreeString, }, { AfxThunkSysAllocStringByteLen, }, { AfxThunkVariantCopy, }, { AfxThunkVariantClear, }, { AfxThunkVariantChangeType, }, { AfxThunkSysAllocStringLen, }, { AfxThunkSysStringLen, }, { AfxThunkSysReAllocStringLen, }, { AfxThunkSysAllocString, }, { AfxThunkSysStringByteLen, }, { AfxThunkVarCyFromStr, }, { AfxThunkVarBstrFromCy, }, { AfxThunkVarDateFromStr, }, { AfxThunkVarBstrFromDate, }, { AfxThunkLoadTypeLib, }, { AfxThunkRegisterTypeLib, }, { AfxThunkDosDateTimeToVariantTime, }, { AfxThunkSafeArrayCreate, }, { AfxThunkSafeArrayRedim, }, { AfxThunkSafeArrayAccessData, }, { AfxThunkSafeArrayUnaccessData, }, { AfxThunkSafeArrayGetUBound, }, { AfxThunkSafeArrayGetLBound, }, { AfxThunkSafeArrayGetElemsize, }, { AfxThunkSafeArrayGetDim, }, // OLEDLG.DLL entry points { AfxThunkOleUIAddVerbMenu, }, { AfxThunkOleUIBusy, }, { AfxThunkOleUIChangeIcon, }, { AfxThunkOleUIChangeSource, }, { AfxThunkOleUIConvert, }, { AfxThunkOleUIEditLinks, }, { AfxThunkOleUIInsertObject, }, { AfxThunkOleUIObjectProperties, }, { AfxThunkOleUIPasteSpecial, }, { AfxThunkOleUIUpdateLinks, }, // Special Mac registry entry points #ifdef _MAC { AfxThunkRegCloseKey, }, { AfxThunkRegOpenKey, }, { AfxThunkRegSetValue, }, { AfxThunkRegQueryValue, }, #endif }; #endif // _AFXDLL ///////////////////////////////////////////////////////////////////////////// // _AFX_OLE_STATE implementation _AFX_OLE_STATE::_AFX_OLE_STATE() { // Note: it is only necessary to intialize non-zero data. #ifdef _AFXDLL m_mapExtraData.InitHashTable(67, FALSE); #endif } _AFX_OLE_STATE::~_AFX_OLE_STATE() { // AfxOleTerm should have already been called by now! ASSERT(!m_bNeedTerm); // unload OLE DLLs if loaded #ifdef _AFXDLL if (m_hInstOLEDLG != NULL) FreeLibrary(m_hInstOLEDLG); if (m_hInstOLEAUT != NULL) FreeLibrary(m_hInstOLEAUT); if (m_hInstOLE != NULL) FreeLibrary(m_hInstOLE); #ifdef _MAC if (m_hInstWLMOLE != NULL) FreeLibrary(m_hInstWLMOLE); #endif //_MAC #endif //_AFXDLL } #pragma warning(disable: 4074) #pragma init_seg(lib) PROCESS_LOCAL(_AFX_OLE_STATE, _afxOleState) /////////////////////////////////////////////////////////////////////////////