1cdf0e10cSrcweir--- include/atl/atlbase.h.orig 2005-04-14 17:54:32.000000000 +0900 2cdf0e10cSrcweir+++ include/atl/atlbase.h 2007-12-23 14:38:02.467500000 +0900 3cdf0e10cSrcweir@@ -10,6 +10,9 @@ 4cdf0e10cSrcweir 5cdf0e10cSrcweir #ifndef __ATLBASE_H__ 6cdf0e10cSrcweir #define __ATLBASE_H__ 7cdf0e10cSrcweir+#if __GNUC__ >=3 8cdf0e10cSrcweir+#pragma GCC system_header 9cdf0e10cSrcweir+#endif 10cdf0e10cSrcweir 11cdf0e10cSrcweir #ifndef __cplusplus 12cdf0e10cSrcweir #error ATL requires C++ compilation (use a .cpp suffix) 13cdf0e10cSrcweir@@ -73,19 +76,47 @@ 14cdf0e10cSrcweir #define _ATL_TYPELIB_INDEX_LENGTH 10 15cdf0e10cSrcweir #define _ATL_QUOTES_SPACE 2 16cdf0e10cSrcweir 17cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING) 18cdf0e10cSrcweir+#pragma pack(push, 8) 19cdf0e10cSrcweir 20cdf0e10cSrcweir #if defined(_ATL_DLL) 21cdf0e10cSrcweir #pragma comment(lib, "atl.lib") 22cdf0e10cSrcweir #endif 23cdf0e10cSrcweir 24cdf0e10cSrcweir-extern "C" const __declspec(selectany) GUID LIBID_ATLLib = {0x44EC0535,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 25cdf0e10cSrcweir-extern "C" const __declspec(selectany) CLSID CLSID_Registrar = {0x44EC053A,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 26cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IRegistrar = {0x44EC053B,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 27cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IAxWinHostWindow = {0xb6ea2050,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}}; 28cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IAxWinAmbientDispatch = {0xb6ea2051,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}}; 29cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IInternalConnection = {0x72AD0770,0x6A9F,0x11d1,{0xBC,0xEC,0x00,0x60,0x08,0x8F,0x44,0x4E}}; 30cdf0e10cSrcweir-extern "C" const __declspec(selectany) IID IID_IDocHostUIHandlerDispatch = {0x425B5AF0,0x65F1,0x11d1,{0x96,0x11,0x00,0x00,0xF8,0x1E,0x0D,0x0D}}; 31cdf0e10cSrcweir+#define __uuidof(I) IID_##I 32cdf0e10cSrcweir+ 33cdf0e10cSrcweir+#include <excpt.h> 34cdf0e10cSrcweir+ 35cdf0e10cSrcweir+namespace ATL 36cdf0e10cSrcweir+{ 37cdf0e10cSrcweir+inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2) 38cdf0e10cSrcweir+{ 39cdf0e10cSrcweir+ return ( 40cdf0e10cSrcweir+ ((unsigned long *) &rguid1)[0] == ((unsigned long *) &rguid2)[0] && 41cdf0e10cSrcweir+ ((unsigned long *) &rguid1)[1] == ((unsigned long *) &rguid2)[1] && 42cdf0e10cSrcweir+ ((unsigned long *) &rguid1)[2] == ((unsigned long *) &rguid2)[2] && 43cdf0e10cSrcweir+ ((unsigned long *) &rguid1)[3] == ((unsigned long *) &rguid2)[3]); 44cdf0e10cSrcweir+} 45cdf0e10cSrcweir+} 46cdf0e10cSrcweir+ 47cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 48cdf0e10cSrcweir+extern "C" const GUID LIBID_ATLLib = {0x44EC0535,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 49cdf0e10cSrcweir+extern "C" const CLSID CLSID_Registrar = {0x44EC053A,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 50cdf0e10cSrcweir+extern "C" const IID IID_IRegistrar = {0x44EC053B,0x400F,0x11D0,{0x9D,0xCD,0x00,0xA0,0xC9,0x03,0x91,0xD3}}; 51cdf0e10cSrcweir+extern "C" const IID IID_IAxWinHostWindow = {0xb6ea2050,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}}; 52cdf0e10cSrcweir+extern "C" const IID IID_IAxWinAmbientDispatch = {0xb6ea2051,0x48a,0x11d1,{0x82,0xb9,0x0,0xc0,0x4f,0xb9,0x94,0x2e}}; 53cdf0e10cSrcweir+extern "C" const IID IID_IInternalConnection = {0x72AD0770,0x6A9F,0x11d1,{0xBC,0xEC,0x00,0x60,0x08,0x8F,0x44,0x4E}}; 54cdf0e10cSrcweir+extern "C" const IID IID_IDocHostUIHandlerDispatch = {0x425B5AF0,0x65F1,0x11d1,{0x96,0x11,0x00,0x00,0xF8,0x1E,0x0D,0x0D}}; 55cdf0e10cSrcweir+#else 56cdf0e10cSrcweir+extern "C" { 57cdf0e10cSrcweir+extern const GUID LIBID_ATLLib; 58cdf0e10cSrcweir+extern const CLSID CLSID_Registrar; 59cdf0e10cSrcweir+extern const IID IID_IRegistrar; 60cdf0e10cSrcweir+extern const IID IID_IAxWinHostWindow; 61cdf0e10cSrcweir+extern const IID IID_IAxWinAmbientDispatch; 62cdf0e10cSrcweir+extern const IID IID_IInternalConnection; 63cdf0e10cSrcweir+extern const IID IID_IDocHostUIHandlerDispatch; 64cdf0e10cSrcweir+} 65cdf0e10cSrcweir+#endif 66cdf0e10cSrcweir 67cdf0e10cSrcweir #ifndef _ATL_DLL_IMPL 68cdf0e10cSrcweir namespace ATL 69cdf0e10cSrcweir@@ -135,7 +166,7 @@ 70cdf0e10cSrcweir IUnknown* p = NULL; 71cdf0e10cSrcweir if (pfnGetClassObject == NULL) 72cdf0e10cSrcweir return S_OK; 73cdf0e10cSrcweir- HRESULT hRes = pfnGetClassObject(pfnCreateInstance, IID_IUnknown, (LPVOID*) &p); 74cdf0e10cSrcweir+ HRESULT hRes = pfnGetClassObject((LPVOID)pfnCreateInstance, IID_IUnknown, (LPVOID*) &p); 75cdf0e10cSrcweir if (SUCCEEDED(hRes)) 76cdf0e10cSrcweir hRes = CoRegisterClassObject(*pclsid, p, dwClsContext, dwFlags, &dwRegister); 77cdf0e10cSrcweir if (p != NULL) 78cdf0e10cSrcweir@@ -284,13 +315,15 @@ 79cdf0e10cSrcweir }; 80cdf0e10cSrcweir #pragma pack(pop) 81cdf0e10cSrcweir 82cdf0e10cSrcweir-PVOID __stdcall __AllocStdCallThunk(VOID); 83cdf0e10cSrcweir-VOID __stdcall __FreeStdCallThunk(PVOID); 84cdf0e10cSrcweir+//PVOID __stdcall __AllocStdCallThunk(VOID); 85cdf0e10cSrcweir+//VOID __stdcall __FreeStdCallThunk(PVOID); 86cdf0e10cSrcweir 87cdf0e10cSrcweir-#define AllocStdCallThunk() __AllocStdCallThunk() 88cdf0e10cSrcweir-#define FreeStdCallThunk(p) __FreeStdCallThunk(p) 89cdf0e10cSrcweir+//#define AllocStdCallThunk() __AllocStdCallThunk() 90cdf0e10cSrcweir+//#define FreeStdCallThunk(p) __FreeStdCallThunk(p) 91cdf0e10cSrcweir 92cdf0e10cSrcweir-#pragma comment(lib, "atlthunk.lib") 93cdf0e10cSrcweir+//#pragma comment(lib, "atlthunk.lib") 94cdf0e10cSrcweir+#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk)) 95cdf0e10cSrcweir+#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p) 96cdf0e10cSrcweir 97cdf0e10cSrcweir #elif defined (_M_AMD64) 98cdf0e10cSrcweir #pragma pack(push,2) 99cdf0e10cSrcweir@@ -465,7 +498,7 @@ 100cdf0e10cSrcweir return( HRESULT_FROM_WIN32( nError ) ); 101cdf0e10cSrcweir } 102cdf0e10cSrcweir 103cdf0e10cSrcweir-inline void __declspec(noreturn) _AtlRaiseException( DWORD dwExceptionCode, DWORD dwExceptionFlags = EXCEPTION_NONCONTINUABLE ) 104cdf0e10cSrcweir+inline void _AtlRaiseException( DWORD dwExceptionCode, DWORD dwExceptionFlags = EXCEPTION_NONCONTINUABLE ) 105cdf0e10cSrcweir { 106cdf0e10cSrcweir RaiseException( dwExceptionCode, dwExceptionFlags, 0, NULL ); 107cdf0e10cSrcweir } 108cdf0e10cSrcweir@@ -658,6 +691,7 @@ 109cdf0e10cSrcweir class _NoAddRefReleaseOnCComPtr : public T 110cdf0e10cSrcweir { 111cdf0e10cSrcweir private: 112cdf0e10cSrcweir+ _NoAddRefReleaseOnCComPtr(); 113cdf0e10cSrcweir STDMETHOD_(ULONG, AddRef)()=0; 114cdf0e10cSrcweir STDMETHOD_(ULONG, Release)()=0; 115cdf0e10cSrcweir }; 116cdf0e10cSrcweir@@ -781,6 +815,7 @@ 117cdf0e10cSrcweir { 118cdf0e10cSrcweir return AtlAdvise(p, pUnk, iid, pdw); 119cdf0e10cSrcweir } 120cdf0e10cSrcweir+#if 0 121cdf0e10cSrcweir HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir ATLASSERT(p == NULL); 124cdf0e10cSrcweir@@ -801,11 +836,12 @@ 125cdf0e10cSrcweir ATLASSERT(pp != NULL && *pp == NULL); 126cdf0e10cSrcweir return p->QueryInterface(__uuidof(Q), (void**)pp); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir+#endif 129cdf0e10cSrcweir T* p; 130cdf0e10cSrcweir }; 131cdf0e10cSrcweir 132cdf0e10cSrcweir 133cdf0e10cSrcweir-template <class T, const IID* piid = &__uuidof(T)> 134cdf0e10cSrcweir+template <class T, const IID* piid> 135cdf0e10cSrcweir class CComQIPtr 136cdf0e10cSrcweir { 137cdf0e10cSrcweir public: 138cdf0e10cSrcweir@@ -933,6 +969,7 @@ 139cdf0e10cSrcweir { 140cdf0e10cSrcweir return AtlAdvise(p, pUnk, iid, pdw); 141cdf0e10cSrcweir } 142cdf0e10cSrcweir+#if 0 143cdf0e10cSrcweir HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir ATLASSERT(p == NULL); 146cdf0e10cSrcweir@@ -953,6 +990,7 @@ 147cdf0e10cSrcweir ATLASSERT(pp != NULL && *pp == NULL); 148cdf0e10cSrcweir return p->QueryInterface(__uuidof(Q), (void**)pp); 149cdf0e10cSrcweir } 150cdf0e10cSrcweir+#endif 151cdf0e10cSrcweir T* p; 152cdf0e10cSrcweir }; 153cdf0e10cSrcweir 154cdf0e10cSrcweir@@ -1087,12 +1125,14 @@ 155cdf0e10cSrcweir hr = ::CoCreateInstance(clsid, pUnkOuter, dwClsContext, __uuidof(IUnknown), (void**)&p); 156cdf0e10cSrcweir return hr; 157cdf0e10cSrcweir } 158cdf0e10cSrcweir+#if 0 159cdf0e10cSrcweir template <class Q> 160cdf0e10cSrcweir HRESULT QueryInterface(Q** pp) 161cdf0e10cSrcweir { 162cdf0e10cSrcweir ATLASSERT(pp != NULL && *pp == NULL); 163cdf0e10cSrcweir return p->QueryInterface(__uuidof(Q), (void**)pp); 164cdf0e10cSrcweir } 165cdf0e10cSrcweir+#endif 166cdf0e10cSrcweir IUnknown* p; 167cdf0e10cSrcweir }; 168cdf0e10cSrcweir 169cdf0e10cSrcweir@@ -1257,21 +1297,26 @@ 170cdf0e10cSrcweir LeaveCriticalSection(&m_sec); 171cdf0e10cSrcweir return S_OK; 172cdf0e10cSrcweir } 173cdf0e10cSrcweir+ static void _InitHandler(void *pData, LPEXCEPTION_POINTERS ep) 174cdf0e10cSrcweir+ { 175cdf0e10cSrcweir+ HRESULT &hRes=*reinterpret_cast<HRESULT*>(pData); 176cdf0e10cSrcweir+ if (STATUS_NO_MEMORY == ep->ExceptionRecord->ExceptionCode) 177cdf0e10cSrcweir+ hRes = E_OUTOFMEMORY; 178cdf0e10cSrcweir+ else 179cdf0e10cSrcweir+ hRes = E_FAIL; 180cdf0e10cSrcweir+ } 181cdf0e10cSrcweir HRESULT Init() throw() 182cdf0e10cSrcweir { 183cdf0e10cSrcweir HRESULT hRes = S_OK; 184cdf0e10cSrcweir- __try 185cdf0e10cSrcweir- { 186cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 187cdf0e10cSrcweir+ __SEHandler _sehandler; 188cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 189cdf0e10cSrcweir+ { 190cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, &hRes, reinterpret_cast<__SEHandler::PF>(EXCEPTION_EXECUTE_HANDLER), _InitHandler); 191cdf0e10cSrcweir InitializeCriticalSection(&m_sec); 192cdf0e10cSrcweir- } 193cdf0e10cSrcweir+ } 194cdf0e10cSrcweir // structured exception may be raised in low memory situations 195cdf0e10cSrcweir- __except(EXCEPTION_EXECUTE_HANDLER) 196cdf0e10cSrcweir- { 197cdf0e10cSrcweir- if (STATUS_NO_MEMORY == GetExceptionCode()) 198cdf0e10cSrcweir- hRes = E_OUTOFMEMORY; 199cdf0e10cSrcweir- else 200cdf0e10cSrcweir- hRes = E_FAIL; 201cdf0e10cSrcweir- } 202cdf0e10cSrcweir+ _sehandler.Reset(); 203cdf0e10cSrcweir return hRes; 204cdf0e10cSrcweir } 205cdf0e10cSrcweir 206cdf0e10cSrcweir@@ -2799,10 +2844,19 @@ 207cdf0e10cSrcweir 208cdf0e10cSrcweir 209cdf0e10cSrcweir class CComModule; 210cdf0e10cSrcweir-__declspec(selectany) CComModule* _pModule=NULL; 211cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 212cdf0e10cSrcweir+CComModule* _pModule=NULL; 213cdf0e10cSrcweir+#else 214cdf0e10cSrcweir+extern CComModule* _pModule; 215cdf0e10cSrcweir+#endif 216cdf0e10cSrcweir+ 217cdf0e10cSrcweir 218cdf0e10cSrcweir // {B62F5910-6528-11d1-9611-0000F81E0D0D} 219cdf0e10cSrcweir-_declspec(selectany) GUID GUID_ATLVer30 = { 0xb62f5910, 0x6528, 0x11d1, { 0x96, 0x11, 0x0, 0x0, 0xf8, 0x1e, 0xd, 0xd } }; 220cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 221cdf0e10cSrcweir+GUID GUID_ATLVer30 = { 0xb62f5910, 0x6528, 0x11d1, { 0x96, 0x11, 0x0, 0x0, 0xf8, 0x1e, 0xd, 0xd } }; 222cdf0e10cSrcweir+#else 223cdf0e10cSrcweir+extern GUID GUID_ATLVer30; 224cdf0e10cSrcweir+#endif 225cdf0e10cSrcweir 226cdf0e10cSrcweir class CComModule : public _ATL_MODULE 227cdf0e10cSrcweir { 228cdf0e10cSrcweir@@ -4286,7 +4340,9 @@ 229cdf0e10cSrcweir 230cdf0e10cSrcweir #endif 231cdf0e10cSrcweir 232cdf0e10cSrcweir-__declspec(selectany) GUID CComModule::m_libid = {0x0,0x0,0x0,{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}; 233cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 234cdf0e10cSrcweir+GUID CComModule::m_libid = {0x0,0x0,0x0,{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}; 235cdf0e10cSrcweir+#endif 236cdf0e10cSrcweir 237cdf0e10cSrcweir #ifdef _ATL_STATIC_REGISTRY 238cdf0e10cSrcweir #define UpdateRegistryFromResource UpdateRegistryFromResourceS 239cdf0e10cSrcweir@@ -4355,7 +4411,9 @@ 240cdf0e10cSrcweir LONG m_nLockCnt; 241cdf0e10cSrcweir }; 242cdf0e10cSrcweir 243cdf0e10cSrcweir-__declspec(selectany) UINT CComApartment::ATL_CREATE_OBJECT = 0; 244cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 245cdf0e10cSrcweir+UINT CComApartment::ATL_CREATE_OBJECT = 0; 246cdf0e10cSrcweir+#endif 247cdf0e10cSrcweir 248cdf0e10cSrcweir class CComSimpleThreadAllocator 249cdf0e10cSrcweir { 250cdf0e10cSrcweir@@ -5855,6 +5913,10 @@ 251cdf0e10cSrcweir } 252cdf0e10cSrcweir 253cdf0e10cSrcweir } 254cdf0e10cSrcweir+ static int _Except(void *pThis, LPEXCEPTION_POINTERS lpEP) 255cdf0e10cSrcweir+ { 256cdf0e10cSrcweir+ return reinterpret_cast<CVirtualBuffer *>(pThis)->Except(lpEP); 257cdf0e10cSrcweir+ } 258cdf0e10cSrcweir void Seek(int nElement) 259cdf0e10cSrcweir { 260cdf0e10cSrcweir if(nElement < 0 || nElement >= m_nMaxElements) 261cdf0e10cSrcweir@@ -5866,41 +5928,53 @@ 262cdf0e10cSrcweir { 263cdf0e10cSrcweir if(nElement < 0 || nElement >= m_nMaxElements) 264cdf0e10cSrcweir _AtlRaiseException((DWORD)EXCEPTION_ARRAY_BOUNDS_EXCEEDED); 265cdf0e10cSrcweir- __try 266cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 267cdf0e10cSrcweir+ __SEHandler _sehandler; 268cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 269cdf0e10cSrcweir { 270cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, this, _Except); 271cdf0e10cSrcweir T* p = &m_pBase[nElement]; 272cdf0e10cSrcweir *p = Element; 273cdf0e10cSrcweir m_pTop = p > m_pTop ? p : m_pTop; 274cdf0e10cSrcweir } 275cdf0e10cSrcweir- __except(Except(GetExceptionInformation())) 276cdf0e10cSrcweir+ else 277cdf0e10cSrcweir { 278cdf0e10cSrcweir } 279cdf0e10cSrcweir+ _sehandler.Reset(); 280cdf0e10cSrcweir 281cdf0e10cSrcweir } 282cdf0e10cSrcweir template <class Q> 283cdf0e10cSrcweir void WriteBulk(Q& helper) 284cdf0e10cSrcweir { 285cdf0e10cSrcweir- __try 286cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 287cdf0e10cSrcweir+ __SEHandler _sehandler; 288cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 289cdf0e10cSrcweir { 290cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, this, _Except); 291cdf0e10cSrcweir m_pCurrent = helper(m_pBase); 292cdf0e10cSrcweir m_pTop = m_pCurrent > m_pTop ? m_pCurrent : m_pTop; 293cdf0e10cSrcweir } 294cdf0e10cSrcweir- __except(Except(GetExceptionInformation())) 295cdf0e10cSrcweir+ else 296cdf0e10cSrcweir { 297cdf0e10cSrcweir } 298cdf0e10cSrcweir+ _sehandler.Reset(); 299cdf0e10cSrcweir } 300cdf0e10cSrcweir void Write(const T& Element) 301cdf0e10cSrcweir { 302cdf0e10cSrcweir if (m_pCurrent < &m_pBase[m_nMaxElements]) { 303cdf0e10cSrcweir- __try 304cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 305cdf0e10cSrcweir+ __SEHandler _sehandler; 306cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 307cdf0e10cSrcweir { 308cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, this, _Except); 309cdf0e10cSrcweir *m_pCurrent = Element; 310cdf0e10cSrcweir m_pCurrent++; 311cdf0e10cSrcweir m_pTop = m_pCurrent > m_pTop ? m_pCurrent : m_pTop; 312cdf0e10cSrcweir } 313cdf0e10cSrcweir- __except(Except(GetExceptionInformation())) 314cdf0e10cSrcweir+ else 315cdf0e10cSrcweir { 316cdf0e10cSrcweir } 317cdf0e10cSrcweir+ _sehandler.Reset(); 318cdf0e10cSrcweir } 319cdf0e10cSrcweir } 320cdf0e10cSrcweir T& Read() 321cdf0e10cSrcweir@@ -5910,14 +5984,18 @@ 322cdf0e10cSrcweir operator BSTR() 323cdf0e10cSrcweir { 324cdf0e10cSrcweir BSTR bstrTemp = NULL ; 325cdf0e10cSrcweir- __try 326cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 327cdf0e10cSrcweir+ __SEHandler _sehandler; 328cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 329cdf0e10cSrcweir { 330cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, this, _Except); 331cdf0e10cSrcweir bstrTemp = SysAllocStringByteLen((char*) m_pBase, 332cdf0e10cSrcweir (UINT) ((BYTE*)m_pTop - (BYTE*)m_pBase)); 333cdf0e10cSrcweir } 334cdf0e10cSrcweir- __except(Except(GetExceptionInformation())) 335cdf0e10cSrcweir+ else 336cdf0e10cSrcweir { 337cdf0e10cSrcweir } 338cdf0e10cSrcweir+ _sehandler.Reset(); 339cdf0e10cSrcweir return bstrTemp; 340cdf0e10cSrcweir } 341cdf0e10cSrcweir const T& operator[](int nElement) const 342cdf0e10cSrcweir@@ -6336,6 +6414,11 @@ 343cdf0e10cSrcweir //Although these functions are big, they are only used once in a module 344cdf0e10cSrcweir //so we should make them inline. 345cdf0e10cSrcweir 346cdf0e10cSrcweir+ATLINLINE int atlmoduleinitfilter(void *, LPEXCEPTION_POINTERS ep) 347cdf0e10cSrcweir+{ 348cdf0e10cSrcweir+ return ep->ExceptionRecord->ExceptionCode == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; 349cdf0e10cSrcweir+} 350cdf0e10cSrcweir+ 351cdf0e10cSrcweir ATLINLINE ATLAPI AtlModuleInit(_ATL_MODULE* pM, _ATL_OBJMAP_ENTRY* p, HINSTANCE h) 352cdf0e10cSrcweir { 353cdf0e10cSrcweir ATLASSERT(pM != NULL); 354cdf0e10cSrcweir@@ -6352,32 +6435,43 @@ 355cdf0e10cSrcweir pM->m_hInst = pM->m_hInstTypeLib = pM->m_hInstResource = h; 356cdf0e10cSrcweir pM->m_nLockCnt=0L; 357cdf0e10cSrcweir pM->m_hHeap = NULL; 358cdf0e10cSrcweir- __try { 359cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 360cdf0e10cSrcweir+ __SEHandler _sehandler; 361cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) { 362cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter); 363cdf0e10cSrcweir InitializeCriticalSection(&pM->m_csTypeInfoHolder); 364cdf0e10cSrcweir- } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { 365cdf0e10cSrcweir+ } else { 366cdf0e10cSrcweir ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder)); 367cdf0e10cSrcweir- return STATUS_NO_MEMORY; 368cdf0e10cSrcweir+ _sehandler.Reset(); 369cdf0e10cSrcweir+ return STATUS_NO_MEMORY; 370cdf0e10cSrcweir } 371cdf0e10cSrcweir+ _sehandler.Reset(); 372cdf0e10cSrcweir 373cdf0e10cSrcweir- __try { 374cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) { 375cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter); 376cdf0e10cSrcweir InitializeCriticalSection(&pM->m_csWindowCreate); 377cdf0e10cSrcweir- } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { 378cdf0e10cSrcweir+ } else { 379cdf0e10cSrcweir DeleteCriticalSection(&pM->m_csTypeInfoHolder); 380cdf0e10cSrcweir ZeroMemory(&pM->m_csWindowCreate, sizeof(pM->m_csWindowCreate)); 381cdf0e10cSrcweir ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder)); 382cdf0e10cSrcweir+ _sehandler.Reset(); 383cdf0e10cSrcweir return STATUS_NO_MEMORY; 384cdf0e10cSrcweir } 385cdf0e10cSrcweir+ _sehandler.Reset(); 386cdf0e10cSrcweir 387cdf0e10cSrcweir- __try { 388cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) { 389cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, NULL, atlmoduleinitfilter); 390cdf0e10cSrcweir InitializeCriticalSection(&pM->m_csObjMap); 391cdf0e10cSrcweir- } __except (GetExceptionCode() == STATUS_NO_MEMORY ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) { 392cdf0e10cSrcweir+ } else { 393cdf0e10cSrcweir DeleteCriticalSection(&pM->m_csWindowCreate); 394cdf0e10cSrcweir DeleteCriticalSection(&pM->m_csTypeInfoHolder); 395cdf0e10cSrcweir ZeroMemory(&pM->m_csObjMap, sizeof(pM->m_csObjMap)); 396cdf0e10cSrcweir ZeroMemory(&pM->m_csWindowCreate, sizeof(pM->m_csWindowCreate)); 397cdf0e10cSrcweir ZeroMemory(&pM->m_csTypeInfoHolder, sizeof(pM->m_csTypeInfoHolder)); 398cdf0e10cSrcweir+ _sehandler.Reset(); 399cdf0e10cSrcweir return STATUS_NO_MEMORY; 400cdf0e10cSrcweir } 401cdf0e10cSrcweir+ _sehandler.Reset(); 402cdf0e10cSrcweir #ifdef _ATL_DLL_IMPL 403cdf0e10cSrcweir if (pM->cbSize > _nAtlModuleVer21Size) 404cdf0e10cSrcweir #endif 405cdf0e10cSrcweir@@ -6450,6 +6544,11 @@ 406cdf0e10cSrcweir return hRes; 407cdf0e10cSrcweir } 408cdf0e10cSrcweir 409cdf0e10cSrcweir+ATLINLINE void atlfinalleavecriticalsection(void *pData) 410cdf0e10cSrcweir+{ 411cdf0e10cSrcweir+ LeaveCriticalSection(reinterpret_cast<LPCRITICAL_SECTION>(pData)); 412cdf0e10cSrcweir+} 413cdf0e10cSrcweir+ 414cdf0e10cSrcweir ATLINLINE ATLAPI AtlModuleGetClassObject(_ATL_MODULE* pM, REFCLSID rclsid, REFIID riid, LPVOID* ppv) 415cdf0e10cSrcweir { 416cdf0e10cSrcweir ATLASSERT(pM != NULL); 417cdf0e10cSrcweir@@ -6473,15 +6572,15 @@ 418cdf0e10cSrcweir if (pEntry->pCF == NULL) 419cdf0e10cSrcweir { 420cdf0e10cSrcweir EnterCriticalSection(&pM->m_csObjMap); 421cdf0e10cSrcweir- __try 422cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 423cdf0e10cSrcweir+ __SEHandler _sehandler; 424cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 425cdf0e10cSrcweir { 426cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, &pM->m_csObjMap, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection); 427cdf0e10cSrcweir if (pEntry->pCF == NULL) 428cdf0e10cSrcweir- hRes = pEntry->pfnGetClassObject(pEntry->pfnCreateInstance, IID_IUnknown, (LPVOID*)&pEntry->pCF); 429cdf0e10cSrcweir- } 430cdf0e10cSrcweir- __finally 431cdf0e10cSrcweir- { 432cdf0e10cSrcweir- LeaveCriticalSection(&pM->m_csObjMap); 433cdf0e10cSrcweir+ hRes = pEntry->pfnGetClassObject((void *)(pEntry->pfnCreateInstance), IID_IUnknown, (LPVOID*)&pEntry->pCF); 434cdf0e10cSrcweir } 435cdf0e10cSrcweir+ _sehandler.Reset(); 436cdf0e10cSrcweir } 437cdf0e10cSrcweir if (pEntry->pCF != NULL) 438cdf0e10cSrcweir hRes = pEntry->pCF->QueryInterface(riid, ppv); 439cdf0e10cSrcweir--- include/atl/atlcom.h.orig 2005-04-14 17:54:32.000000000 +0900 440cdf0e10cSrcweir+++ include/atl/atlcom.h 2007-12-03 22:43:54.833375000 +0900 441cdf0e10cSrcweir@@ -10,6 +10,9 @@ 442cdf0e10cSrcweir 443cdf0e10cSrcweir #ifndef __ATLCOM_H__ 444cdf0e10cSrcweir #define __ATLCOM_H__ 445cdf0e10cSrcweir+#if __GNUC__ >=3 446cdf0e10cSrcweir+#pragma GCC system_header 447cdf0e10cSrcweir+#endif 448cdf0e10cSrcweir 449cdf0e10cSrcweir #ifndef __cplusplus 450cdf0e10cSrcweir #error ATL requires C++ compilation (use a .cpp suffix) 451cdf0e10cSrcweir@@ -19,7 +22,10 @@ 452cdf0e10cSrcweir #error atlcom.h requires atlbase.h to be included first 453cdf0e10cSrcweir #endif 454cdf0e10cSrcweir 455cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING) 456cdf0e10cSrcweir+#include <algorithm> 457cdf0e10cSrcweir+using ::std::min; 458cdf0e10cSrcweir+ 459cdf0e10cSrcweir+#pragma pack(push, 8) 460cdf0e10cSrcweir 461cdf0e10cSrcweir EXTERN_C const IID IID_ITargetFrame; 462cdf0e10cSrcweir 463cdf0e10cSrcweir@@ -2191,19 +2197,23 @@ 464cdf0e10cSrcweir // override it in your class and call each base class' version of this 465cdf0e10cSrcweir #define BEGIN_COM_MAP(x) public: \ 466cdf0e10cSrcweir typedef x _ComMapClass; \ 467cdf0e10cSrcweir+ static void _CacheFinal(void *pData)\ 468cdf0e10cSrcweir+ {\ 469cdf0e10cSrcweir+ reinterpret_cast<_ComMapClass*>(pData)->Unlock();\ 470cdf0e10cSrcweir+ }\ 471cdf0e10cSrcweir static HRESULT WINAPI _Cache(void* pv, REFIID iid, void** ppvObject, DWORD_PTR dw)\ 472cdf0e10cSrcweir {\ 473cdf0e10cSrcweir _ComMapClass* p = (_ComMapClass*)pv;\ 474cdf0e10cSrcweir p->Lock();\ 475cdf0e10cSrcweir HRESULT hRes = E_FAIL; \ 476cdf0e10cSrcweir- __try \ 477cdf0e10cSrcweir+ jmp_buf _sejmpbuf; \ 478cdf0e10cSrcweir+ __SEHandler _sehandler; \ 479cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) \ 480cdf0e10cSrcweir { \ 481cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, p, EXCEPTION_CONTINUE_SEARCH, NULL, _CacheFinal);\ 482cdf0e10cSrcweir hRes = CComObjectRootBase::_Cache(pv, iid, ppvObject, dw);\ 483cdf0e10cSrcweir } \ 484cdf0e10cSrcweir- __finally \ 485cdf0e10cSrcweir- { \ 486cdf0e10cSrcweir- p->Unlock();\ 487cdf0e10cSrcweir- } \ 488cdf0e10cSrcweir+ _sehandler.Reset();\ 489cdf0e10cSrcweir return hRes;\ 490cdf0e10cSrcweir }\ 491cdf0e10cSrcweir IUnknown* _GetRawUnknown() \ 492cdf0e10cSrcweir@@ -2339,7 +2349,7 @@ 493cdf0e10cSrcweir return( pMap ); } 494cdf0e10cSrcweir 495cdf0e10cSrcweir #define BEGIN_OBJECT_MAP(x) static _ATL_OBJMAP_ENTRY x[] = { 496cdf0e10cSrcweir-#define END_OBJECT_MAP() {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}}; 497cdf0e10cSrcweir+#define END_OBJECT_MAP() {NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL}}; 498cdf0e10cSrcweir #define OBJECT_ENTRY(clsid, class) {&clsid, class::UpdateRegistry, class::_ClassFactoryCreatorClass::CreateInstance, class::_CreatorClass::CreateInstance, NULL, 0, class::GetObjectDescription, class::GetCategoryMap, class::ObjectMain }, 499cdf0e10cSrcweir #define OBJECT_ENTRY_NON_CREATEABLE(class) {&CLSID_NULL, class::UpdateRegistry, NULL, NULL, NULL, 0, NULL, class::GetCategoryMap, class::ObjectMain }, 500cdf0e10cSrcweir 501cdf0e10cSrcweir@@ -2492,9 +2502,9 @@ 502cdf0e10cSrcweir public: 503cdf0e10cSrcweir typedef ThreadModel _ThreadModel; 504cdf0e10cSrcweir #ifdef OLD_ATL_CRITSEC_CODE 505cdf0e10cSrcweir- typename typedef _ThreadModel::AutoCriticalSection _CritSec; 506cdf0e10cSrcweir+ typedef typename _ThreadModel::AutoCriticalSection _CritSec; 507cdf0e10cSrcweir #else 508cdf0e10cSrcweir- typename typedef _ThreadModel::AutoDeleteCriticalSection _AutoDelCritSec; 509cdf0e10cSrcweir+ typedef typename _ThreadModel::AutoDeleteCriticalSection _AutoDelCritSec; 510cdf0e10cSrcweir #endif /* OLD_ATL_CRITSEC_CODE */ 511cdf0e10cSrcweir typedef CComObjectLockT<_ThreadModel> ObjectLock; 512cdf0e10cSrcweir 513cdf0e10cSrcweir@@ -2638,8 +2648,8 @@ 514cdf0e10cSrcweir // Set refcount to 1 to protect destruction 515cdf0e10cSrcweir ~CComObject() 516cdf0e10cSrcweir { 517cdf0e10cSrcweir- m_dwRef = 1L; 518cdf0e10cSrcweir- FinalRelease(); 519cdf0e10cSrcweir+ this->m_dwRef = 1L; 520cdf0e10cSrcweir+ this->FinalRelease(); 521cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 522cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 523cdf0e10cSrcweir #endif 524cdf0e10cSrcweir@@ -2647,22 +2657,24 @@ 525cdf0e10cSrcweir } 526cdf0e10cSrcweir //If InternalAddRef or InternalRelease is undefined then your class 527cdf0e10cSrcweir //doesn't derive from CComObjectRoot 528cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 529cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 530cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 531cdf0e10cSrcweir { 532cdf0e10cSrcweir- ULONG l = InternalRelease(); 533cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 534cdf0e10cSrcweir if (l == 0) 535cdf0e10cSrcweir delete this; 536cdf0e10cSrcweir return l; 537cdf0e10cSrcweir } 538cdf0e10cSrcweir //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP 539cdf0e10cSrcweir STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject) 540cdf0e10cSrcweir- {return _InternalQueryInterface(iid, ppvObject);} 541cdf0e10cSrcweir+ {return this->_InternalQueryInterface(iid, ppvObject);} 542cdf0e10cSrcweir+#if 0 543cdf0e10cSrcweir template <class Q> 544cdf0e10cSrcweir HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) 545cdf0e10cSrcweir { 546cdf0e10cSrcweir return QueryInterface(__uuidof(Q), (void**)pp); 547cdf0e10cSrcweir } 548cdf0e10cSrcweir+#endif 549cdf0e10cSrcweir 550cdf0e10cSrcweir static HRESULT WINAPI CreateInstance(CComObject<Base>** pp); 551cdf0e10cSrcweir }; 552cdf0e10cSrcweir@@ -2719,8 +2731,8 @@ 553cdf0e10cSrcweir #endif /* OLD_ATL_CRITSEC_CODE */ 554cdf0e10cSrcweir ~CComObjectCached() 555cdf0e10cSrcweir { 556cdf0e10cSrcweir- m_dwRef = 1L; 557cdf0e10cSrcweir- FinalRelease(); 558cdf0e10cSrcweir+ this->m_dwRef = 1L; 559cdf0e10cSrcweir+ this->FinalRelease(); 560cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 561cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 562cdf0e10cSrcweir #endif 563cdf0e10cSrcweir@@ -2729,14 +2741,14 @@ 564cdf0e10cSrcweir //doesn't derive from CComObjectRoot 565cdf0e10cSrcweir STDMETHOD_(ULONG, AddRef)() 566cdf0e10cSrcweir { 567cdf0e10cSrcweir- ULONG l = InternalAddRef(); 568cdf0e10cSrcweir+ ULONG l = this->InternalAddRef(); 569cdf0e10cSrcweir if (l == 2) 570cdf0e10cSrcweir _Module.Lock(); 571cdf0e10cSrcweir return l; 572cdf0e10cSrcweir } 573cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 574cdf0e10cSrcweir { 575cdf0e10cSrcweir- ULONG l = InternalRelease(); 576cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 577cdf0e10cSrcweir if (l == 0) 578cdf0e10cSrcweir delete this; 579cdf0e10cSrcweir else if (l == 1) 580cdf0e10cSrcweir@@ -2745,7 +2757,7 @@ 581cdf0e10cSrcweir } 582cdf0e10cSrcweir //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP 583cdf0e10cSrcweir STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject) 584cdf0e10cSrcweir- {return _InternalQueryInterface(iid, ppvObject);} 585cdf0e10cSrcweir+ {return this->_InternalQueryInterface(iid, ppvObject);} 586cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE 587cdf0e10cSrcweir CComGlobalsThreadModel::AutoDeleteCriticalSection m_csCached; 588cdf0e10cSrcweir #endif /* OLD_ATL_CRITSEC_CODE */ 589cdf0e10cSrcweir@@ -2762,8 +2774,8 @@ 590cdf0e10cSrcweir // Set refcount to 1 to protect destruction 591cdf0e10cSrcweir ~CComObjectNoLock() 592cdf0e10cSrcweir { 593cdf0e10cSrcweir- m_dwRef = 1L; 594cdf0e10cSrcweir- FinalRelease(); 595cdf0e10cSrcweir+ this->m_dwRef = 1L; 596cdf0e10cSrcweir+ this->FinalRelease(); 597cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 598cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 599cdf0e10cSrcweir #endif 600cdf0e10cSrcweir@@ -2771,17 +2783,17 @@ 601cdf0e10cSrcweir 602cdf0e10cSrcweir //If InternalAddRef or InternalRelease is undefined then your class 603cdf0e10cSrcweir //doesn't derive from CComObjectRoot 604cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 605cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 606cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 607cdf0e10cSrcweir { 608cdf0e10cSrcweir- ULONG l = InternalRelease(); 609cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 610cdf0e10cSrcweir if (l == 0) 611cdf0e10cSrcweir delete this; 612cdf0e10cSrcweir return l; 613cdf0e10cSrcweir } 614cdf0e10cSrcweir //if _InternalQueryInterface is undefined then you forgot BEGIN_COM_MAP 615cdf0e10cSrcweir STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject) 616cdf0e10cSrcweir- {return _InternalQueryInterface(iid, ppvObject);} 617cdf0e10cSrcweir+ {return this->_InternalQueryInterface(iid, ppvObject);} 618cdf0e10cSrcweir }; 619cdf0e10cSrcweir 620cdf0e10cSrcweir // It is possible for Base not to derive from CComObjectRoot 621cdf0e10cSrcweir@@ -2794,14 +2806,14 @@ 622cdf0e10cSrcweir CComObjectGlobal(void* = NULL) 623cdf0e10cSrcweir { 624cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE 625cdf0e10cSrcweir- m_hResFinalConstruct = _AtlInitialConstruct(); 626cdf0e10cSrcweir+ m_hResFinalConstruct = this->_AtlInitialConstruct(); 627cdf0e10cSrcweir if (SUCCEEDED(m_hResFinalConstruct)) 628cdf0e10cSrcweir #endif /* OLD_ATL_CRITSEC_CODE */ 629cdf0e10cSrcweir- m_hResFinalConstruct = FinalConstruct(); 630cdf0e10cSrcweir+ m_hResFinalConstruct = this->FinalConstruct(); 631cdf0e10cSrcweir } 632cdf0e10cSrcweir ~CComObjectGlobal() 633cdf0e10cSrcweir { 634cdf0e10cSrcweir- FinalRelease(); 635cdf0e10cSrcweir+ this->FinalRelease(); 636cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 637cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 638cdf0e10cSrcweir #endif 639cdf0e10cSrcweir@@ -2810,7 +2822,7 @@ 640cdf0e10cSrcweir STDMETHOD_(ULONG, AddRef)() {return _Module.Lock();} 641cdf0e10cSrcweir STDMETHOD_(ULONG, Release)(){return _Module.Unlock();} 642cdf0e10cSrcweir STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject) 643cdf0e10cSrcweir- {return _InternalQueryInterface(iid, ppvObject);} 644cdf0e10cSrcweir+ {return this->_InternalQueryInterface(iid, ppvObject);} 645cdf0e10cSrcweir HRESULT m_hResFinalConstruct; 646cdf0e10cSrcweir }; 647cdf0e10cSrcweir 648cdf0e10cSrcweir@@ -2824,14 +2836,14 @@ 649cdf0e10cSrcweir CComObjectStack(void* = NULL) 650cdf0e10cSrcweir { 651cdf0e10cSrcweir #ifndef OLD_ATL_CRITSEC_CODE 652cdf0e10cSrcweir- m_hResFinalConstruct = _AtlInitialConstruct(); 653cdf0e10cSrcweir+ m_hResFinalConstruct = this->_AtlInitialConstruct(); 654cdf0e10cSrcweir if (SUCCEEDED(m_hResFinalConstruct)) 655cdf0e10cSrcweir #endif /* OLD_ATL_CRITSEC_CODE */ 656cdf0e10cSrcweir- m_hResFinalConstruct = FinalConstruct(); 657cdf0e10cSrcweir+ m_hResFinalConstruct = this->FinalConstruct(); 658cdf0e10cSrcweir } 659cdf0e10cSrcweir ~CComObjectStack() 660cdf0e10cSrcweir { 661cdf0e10cSrcweir- FinalRelease(); 662cdf0e10cSrcweir+ this->FinalRelease(); 663cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 664cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 665cdf0e10cSrcweir #endif 666cdf0e10cSrcweir@@ -2850,6 +2862,8 @@ 667cdf0e10cSrcweir { 668cdf0e10cSrcweir public: 669cdf0e10cSrcweir typedef Base _BaseClass; 670cdf0e10cSrcweir+ using Base::_GetRawUnknown; 671cdf0e10cSrcweir+ using Base::m_pOuterUnknown; 672cdf0e10cSrcweir CComContainedObject(void* pv) {m_pOuterUnknown = (IUnknown*)pv;} 673cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 674cdf0e10cSrcweir ~CComContainedObject() 675cdf0e10cSrcweir@@ -2859,20 +2873,22 @@ 676cdf0e10cSrcweir } 677cdf0e10cSrcweir #endif 678cdf0e10cSrcweir 679cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return OuterAddRef();} 680cdf0e10cSrcweir- STDMETHOD_(ULONG, Release)() {return OuterRelease();} 681cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->OuterAddRef();} 682cdf0e10cSrcweir+ STDMETHOD_(ULONG, Release)() {return this->OuterRelease();} 683cdf0e10cSrcweir STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject) 684cdf0e10cSrcweir { 685cdf0e10cSrcweir- HRESULT hr = OuterQueryInterface(iid, ppvObject); 686cdf0e10cSrcweir+ HRESULT hr = this->OuterQueryInterface(iid, ppvObject); 687cdf0e10cSrcweir if (FAILED(hr) && _GetRawUnknown() != m_pOuterUnknown) 688cdf0e10cSrcweir- hr = _InternalQueryInterface(iid, ppvObject); 689cdf0e10cSrcweir+ hr = this->_InternalQueryInterface(iid, ppvObject); 690cdf0e10cSrcweir return hr; 691cdf0e10cSrcweir } 692cdf0e10cSrcweir+#if 0 693cdf0e10cSrcweir template <class Q> 694cdf0e10cSrcweir HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) 695cdf0e10cSrcweir { 696cdf0e10cSrcweir return QueryInterface(__uuidof(Q), (void**)pp); 697cdf0e10cSrcweir } 698cdf0e10cSrcweir+#endif 699cdf0e10cSrcweir //GetControllingUnknown may be virtual if the Base class has declared 700cdf0e10cSrcweir //DECLARE_GET_CONTROLLING_UNKNOWN() 701cdf0e10cSrcweir IUnknown* GetControllingUnknown() 702cdf0e10cSrcweir@@ -2915,18 +2931,18 @@ 703cdf0e10cSrcweir // override it in your class and call each base class' version of this 704cdf0e10cSrcweir HRESULT FinalConstruct() 705cdf0e10cSrcweir { 706cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 707cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 708cdf0e10cSrcweir return m_contained.FinalConstruct(); 709cdf0e10cSrcweir } 710cdf0e10cSrcweir void FinalRelease() 711cdf0e10cSrcweir { 712cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 713cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 714cdf0e10cSrcweir m_contained.FinalRelease(); 715cdf0e10cSrcweir } 716cdf0e10cSrcweir // Set refcount to 1 to protect destruction 717cdf0e10cSrcweir ~CComAggObject() 718cdf0e10cSrcweir { 719cdf0e10cSrcweir- m_dwRef = 1L; 720cdf0e10cSrcweir+ this->m_dwRef = 1L; 721cdf0e10cSrcweir FinalRelease(); 722cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 723cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(this); 724cdf0e10cSrcweir@@ -2934,10 +2950,10 @@ 725cdf0e10cSrcweir _Module.Unlock(); 726cdf0e10cSrcweir } 727cdf0e10cSrcweir 728cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 729cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 730cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 731cdf0e10cSrcweir { 732cdf0e10cSrcweir- ULONG l = InternalRelease(); 733cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 734cdf0e10cSrcweir if (l == 0) 735cdf0e10cSrcweir delete this; 736cdf0e10cSrcweir return l; 737cdf0e10cSrcweir@@ -2959,11 +2975,13 @@ 738cdf0e10cSrcweir hRes = m_contained._InternalQueryInterface(iid, ppvObject); 739cdf0e10cSrcweir return hRes; 740cdf0e10cSrcweir } 741cdf0e10cSrcweir+#if 0 742cdf0e10cSrcweir template <class Q> 743cdf0e10cSrcweir HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) 744cdf0e10cSrcweir { 745cdf0e10cSrcweir return QueryInterface(__uuidof(Q), (void**)pp); 746cdf0e10cSrcweir } 747cdf0e10cSrcweir+#endif 748cdf0e10cSrcweir static HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, CComAggObject<contained>** pp) 749cdf0e10cSrcweir { 750cdf0e10cSrcweir _ATL_VALIDATE_OUT_POINTER(pp); 751cdf0e10cSrcweir@@ -3023,21 +3041,21 @@ 752cdf0e10cSrcweir // override it in your class and call each base class' version of this 753cdf0e10cSrcweir HRESULT FinalConstruct() 754cdf0e10cSrcweir { 755cdf0e10cSrcweir- InternalAddRef(); 756cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 757cdf0e10cSrcweir+ this->InternalAddRef(); 758cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 759cdf0e10cSrcweir HRESULT hr = m_contained.FinalConstruct(); 760cdf0e10cSrcweir- InternalRelease(); 761cdf0e10cSrcweir+ this->InternalRelease(); 762cdf0e10cSrcweir return hr; 763cdf0e10cSrcweir } 764cdf0e10cSrcweir void FinalRelease() 765cdf0e10cSrcweir { 766cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 767cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 768cdf0e10cSrcweir m_contained.FinalRelease(); 769cdf0e10cSrcweir } 770cdf0e10cSrcweir // Set refcount to 1 to protect destruction 771cdf0e10cSrcweir ~CComPolyObject() 772cdf0e10cSrcweir { 773cdf0e10cSrcweir- m_dwRef = 1L; 774cdf0e10cSrcweir+ this->m_dwRef = 1L; 775cdf0e10cSrcweir FinalRelease(); 776cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 777cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(this); 778cdf0e10cSrcweir@@ -3045,10 +3063,10 @@ 779cdf0e10cSrcweir _Module.Unlock(); 780cdf0e10cSrcweir } 781cdf0e10cSrcweir 782cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 783cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 784cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 785cdf0e10cSrcweir { 786cdf0e10cSrcweir- ULONG l = InternalRelease(); 787cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 788cdf0e10cSrcweir if (l == 0) 789cdf0e10cSrcweir delete this; 790cdf0e10cSrcweir return l; 791cdf0e10cSrcweir@@ -3072,11 +3090,13 @@ 792cdf0e10cSrcweir hRes = m_contained._InternalQueryInterface(iid, ppvObject); 793cdf0e10cSrcweir return hRes; 794cdf0e10cSrcweir } 795cdf0e10cSrcweir+#if 0 796cdf0e10cSrcweir template <class Q> 797cdf0e10cSrcweir HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp) 798cdf0e10cSrcweir { 799cdf0e10cSrcweir return QueryInterface(__uuidof(Q), (void**)pp); 800cdf0e10cSrcweir } 801cdf0e10cSrcweir+#endif 802cdf0e10cSrcweir static HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, CComPolyObject<contained>** pp) 803cdf0e10cSrcweir { 804cdf0e10cSrcweir _ATL_VALIDATE_OUT_POINTER(pp); 805cdf0e10cSrcweir@@ -3111,27 +3131,28 @@ 806cdf0e10cSrcweir class CComTearOffObject : public Base 807cdf0e10cSrcweir { 808cdf0e10cSrcweir public: 809cdf0e10cSrcweir+ using Base::m_pOwner; 810cdf0e10cSrcweir CComTearOffObject(void* pv) 811cdf0e10cSrcweir { 812cdf0e10cSrcweir ATLASSERT(m_pOwner == NULL); 813cdf0e10cSrcweir- m_pOwner = reinterpret_cast<CComObject<Base::_OwnerClass>*>(pv); 814cdf0e10cSrcweir+ m_pOwner = reinterpret_cast<CComObject<typename Base::_OwnerClass>*>(pv); 815cdf0e10cSrcweir m_pOwner->AddRef(); 816cdf0e10cSrcweir } 817cdf0e10cSrcweir // Set refcount to 1 to protect destruction 818cdf0e10cSrcweir ~CComTearOffObject() 819cdf0e10cSrcweir { 820cdf0e10cSrcweir- m_dwRef = 1L; 821cdf0e10cSrcweir- FinalRelease(); 822cdf0e10cSrcweir+ this->m_dwRef = 1L; 823cdf0e10cSrcweir+ this->FinalRelease(); 824cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 825cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(_GetRawUnknown()); 826cdf0e10cSrcweir #endif 827cdf0e10cSrcweir m_pOwner->Release(); 828cdf0e10cSrcweir } 829cdf0e10cSrcweir 830cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 831cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 832cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 833cdf0e10cSrcweir { 834cdf0e10cSrcweir- ULONG l = InternalRelease(); 835cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 836cdf0e10cSrcweir if (l == 0) 837cdf0e10cSrcweir delete this; 838cdf0e10cSrcweir return l; 839cdf0e10cSrcweir@@ -3150,27 +3171,27 @@ 840cdf0e10cSrcweir public: 841cdf0e10cSrcweir typedef contained _BaseClass; 842cdf0e10cSrcweir CComCachedTearOffObject(void* pv) : 843cdf0e10cSrcweir- m_contained(((contained::_OwnerClass*)pv)->GetControllingUnknown()) 844cdf0e10cSrcweir+ m_contained(((typename contained::_OwnerClass*)pv)->GetControllingUnknown()) 845cdf0e10cSrcweir { 846cdf0e10cSrcweir ATLASSERT(m_contained.m_pOwner == NULL); 847cdf0e10cSrcweir- m_contained.m_pOwner = reinterpret_cast<CComObject<contained::_OwnerClass>*>(pv); 848cdf0e10cSrcweir+ m_contained.m_pOwner = reinterpret_cast<CComObject<typename contained::_OwnerClass>*>(pv); 849cdf0e10cSrcweir } 850cdf0e10cSrcweir //If you get a message that this call is ambiguous then you need to 851cdf0e10cSrcweir // override it in your class and call each base class' version of this 852cdf0e10cSrcweir HRESULT FinalConstruct() 853cdf0e10cSrcweir { 854cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 855cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalConstruct(); 856cdf0e10cSrcweir return m_contained.FinalConstruct(); 857cdf0e10cSrcweir } 858cdf0e10cSrcweir void FinalRelease() 859cdf0e10cSrcweir { 860cdf0e10cSrcweir- CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 861cdf0e10cSrcweir+ CComObjectRootEx<typename contained::_ThreadModel::ThreadModelNoCS>::FinalRelease(); 862cdf0e10cSrcweir m_contained.FinalRelease(); 863cdf0e10cSrcweir } 864cdf0e10cSrcweir // Set refcount to 1 to protect destruction 865cdf0e10cSrcweir ~CComCachedTearOffObject() 866cdf0e10cSrcweir { 867cdf0e10cSrcweir- m_dwRef = 1L; 868cdf0e10cSrcweir+ this->m_dwRef = 1L; 869cdf0e10cSrcweir FinalRelease(); 870cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 871cdf0e10cSrcweir _Module.DeleteNonAddRefThunk(this); 872cdf0e10cSrcweir@@ -3178,10 +3199,10 @@ 873cdf0e10cSrcweir } 874cdf0e10cSrcweir 875cdf0e10cSrcweir 876cdf0e10cSrcweir- STDMETHOD_(ULONG, AddRef)() {return InternalAddRef();} 877cdf0e10cSrcweir+ STDMETHOD_(ULONG, AddRef)() {return this->InternalAddRef();} 878cdf0e10cSrcweir STDMETHOD_(ULONG, Release)() 879cdf0e10cSrcweir { 880cdf0e10cSrcweir- ULONG l = InternalRelease(); 881cdf0e10cSrcweir+ ULONG l = this->InternalRelease(); 882cdf0e10cSrcweir if (l == 0) 883cdf0e10cSrcweir delete this; 884cdf0e10cSrcweir return l; 885cdf0e10cSrcweir@@ -3260,7 +3281,9 @@ 886cdf0e10cSrcweir { 887cdf0e10cSrcweir public: 888cdf0e10cSrcweir typedef license _LicenseClass; 889cdf0e10cSrcweir- typedef CComClassFactory2<license> _ComMapClass; 890cdf0e10cSrcweir+ using license::IsLicenseValid; 891cdf0e10cSrcweir+ using license::GetLicenseKey; 892cdf0e10cSrcweir+// typedef CComClassFactory2<license> _ComMapClass; 893cdf0e10cSrcweir BEGIN_COM_MAP(CComClassFactory2<license>) 894cdf0e10cSrcweir COM_INTERFACE_ENTRY(IClassFactory) 895cdf0e10cSrcweir COM_INTERFACE_ENTRY(IClassFactory2) 896cdf0e10cSrcweir@@ -3297,7 +3320,7 @@ 897cdf0e10cSrcweir if (ppvObject == NULL) 898cdf0e10cSrcweir return E_POINTER; 899cdf0e10cSrcweir *ppvObject = NULL; 900cdf0e10cSrcweir- if ( ((bstrKey != NULL) && !VerifyLicenseKey(bstrKey)) || 901cdf0e10cSrcweir+ if ( ((bstrKey != NULL) && !this->VerifyLicenseKey(bstrKey)) || 902cdf0e10cSrcweir ((bstrKey == NULL) && !IsLicenseValid()) ) 903cdf0e10cSrcweir return CLASS_E_NOTLICENSED; 904cdf0e10cSrcweir if ((pUnkOuter != NULL) && !InlineIsEqualUnknown(riid)) 905cdf0e10cSrcweir@@ -3363,7 +3386,7 @@ 906cdf0e10cSrcweir if (pUnkOuter != NULL) 907cdf0e10cSrcweir hRes = CLASS_E_NOAGGREGATION; 908cdf0e10cSrcweir else 909cdf0e10cSrcweir- hRes = _Module.CreateInstance(m_pfnCreateInstance, riid, ppvObj); 910cdf0e10cSrcweir+ hRes = _Module.CreateInstance((LPVOID)m_pfnCreateInstance, riid, ppvObj); 911cdf0e10cSrcweir } 912cdf0e10cSrcweir return hRes; 913cdf0e10cSrcweir } 914cdf0e10cSrcweir@@ -3454,6 +3477,7 @@ 915cdf0e10cSrcweir lpszHelpFile, iid, hRes); 916cdf0e10cSrcweir } 917cdf0e10cSrcweir #endif 918cdf0e10cSrcweir+#if 0 919cdf0e10cSrcweir template <class Q> 920cdf0e10cSrcweir static HRESULT CreateInstance(IUnknown* punkOuter, Q** pp) 921cdf0e10cSrcweir { 922cdf0e10cSrcweir@@ -3464,6 +3488,7 @@ 923cdf0e10cSrcweir { 924cdf0e10cSrcweir return T::_CreatorClass::CreateInstance(NULL, __uuidof(Q), (void**) pp); 925cdf0e10cSrcweir } 926cdf0e10cSrcweir+#endif 927cdf0e10cSrcweir }; 928cdf0e10cSrcweir 929cdf0e10cSrcweir // ATL doesn't support multiple LCID's at the same time 930cdf0e10cSrcweir@@ -3651,7 +3676,7 @@ 931cdf0e10cSrcweir { 932cdf0e10cSrcweir CComPtr<ITypeInfo> spInfo(spTypeInfo); 933cdf0e10cSrcweir CComPtr<ITypeInfo2> spTypeInfo2; 934cdf0e10cSrcweir- if (SUCCEEDED(spTypeInfo->QueryInterface(&spTypeInfo2))) 935cdf0e10cSrcweir+ if (SUCCEEDED(spTypeInfo->QueryInterface(IID_ITypeInfo2, (void**)&spTypeInfo2))) 936cdf0e10cSrcweir spInfo = spTypeInfo2; 937cdf0e10cSrcweir 938cdf0e10cSrcweir m_pInfo = spInfo.Detach(); 939cdf0e10cSrcweir@@ -3760,6 +3785,9 @@ 940cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////// 941cdf0e10cSrcweir // IDispEventImpl 942cdf0e10cSrcweir 943cdf0e10cSrcweir+template <class T> 944cdf0e10cSrcweir+struct _ATL_EVENT_ENTRY; 945cdf0e10cSrcweir+ 946cdf0e10cSrcweir #ifdef _ATL_DLL 947cdf0e10cSrcweir ATLAPI AtlGetObjectSourceInterface(IUnknown* punkObj, GUID* plibid, IID* piid, unsigned short* pdwMajor, unsigned short* pdwMinor); 948cdf0e10cSrcweir #else 949cdf0e10cSrcweir@@ -3909,16 +3937,17 @@ 950cdf0e10cSrcweir #else 951cdf0e10cSrcweir 952cdf0e10cSrcweir #pragma warning(disable:4740) // flow in/out of inline disables global opts 953cdf0e10cSrcweir-inline void __declspec(naked) __stdcall CComStdCallThunkHelper() 954cdf0e10cSrcweir+inline void __stdcall CComStdCallThunkHelper() 955cdf0e10cSrcweir { 956cdf0e10cSrcweir- __asm 957cdf0e10cSrcweir- { 958cdf0e10cSrcweir- mov eax, [esp+4]; // get pThunk 959cdf0e10cSrcweir- mov edx, [eax+4]; // get the pThunk->pThis 960cdf0e10cSrcweir- mov [esp+4], edx; // replace pThunk with pThis 961cdf0e10cSrcweir- mov eax, [eax+8]; // get pThunk->pfn 962cdf0e10cSrcweir- jmp eax; // jump pfn 963cdf0e10cSrcweir- }; 964cdf0e10cSrcweir+ asm( 965cdf0e10cSrcweir+ " movl $8(%ebp), %eax\n" // get pThunk 966cdf0e10cSrcweir+ " movl $4(%eax), edx\n" // get the pThunk->pThis 967cdf0e10cSrcweir+ " movl %edx, $8(%ebp)\n" // replace pThunk with pThis 968cdf0e10cSrcweir+ " movl $8(%eax), %eax\n" // get pThunk->pfn 969cdf0e10cSrcweir+ " movl %ebp, %esp\n" 970cdf0e10cSrcweir+ " popl %ebp\n" 971cdf0e10cSrcweir+ " jmp %eax" // jump pfn 972cdf0e10cSrcweir+ ); 973cdf0e10cSrcweir } 974cdf0e10cSrcweir #pragma warning(default:4740) 975cdf0e10cSrcweir #endif 976cdf0e10cSrcweir@@ -3985,6 +4014,7 @@ 977cdf0e10cSrcweir class ATL_NO_VTABLE IDispEventSimpleImpl : public _IDispEventLocator<nID, pdiid> 978cdf0e10cSrcweir { 979cdf0e10cSrcweir public: 980cdf0e10cSrcweir+ using _IDispEventLocator<nID, pdiid>::m_dwEventCookie; 981cdf0e10cSrcweir STDMETHOD(_LocDEQueryInterface)(REFIID riid, void ** ppvObject) 982cdf0e10cSrcweir { 983cdf0e10cSrcweir _ATL_VALIDATE_OUT_POINTER(ppvObject); 984cdf0e10cSrcweir@@ -3992,7 +4022,7 @@ 985cdf0e10cSrcweir if (InlineIsEqualGUID(riid, *pdiid) || 986cdf0e10cSrcweir InlineIsEqualUnknown(riid) || 987cdf0e10cSrcweir InlineIsEqualGUID(riid, IID_IDispatch) || 988cdf0e10cSrcweir- InlineIsEqualGUID(riid, m_iid)) 989cdf0e10cSrcweir+ InlineIsEqualGUID(riid, this->m_iid)) 990cdf0e10cSrcweir { 991cdf0e10cSrcweir *ppvObject = this; 992cdf0e10cSrcweir AddRef(); 993cdf0e10cSrcweir@@ -4186,6 +4216,10 @@ 994cdf0e10cSrcweir { 995cdf0e10cSrcweir public: 996cdf0e10cSrcweir typedef tihclass _tihclass; 997cdf0e10cSrcweir+ using IDispEventSimpleImpl<nID, T, pdiid>::m_libid; 998cdf0e10cSrcweir+ using IDispEventSimpleImpl<nID, T, pdiid>::m_iid; 999cdf0e10cSrcweir+ using IDispEventSimpleImpl<nID, T, pdiid>::m_wMajorVerNum; 1000cdf0e10cSrcweir+ using IDispEventSimpleImpl<nID, T, pdiid>::m_wMinorVerNum; 1001cdf0e10cSrcweir 1002cdf0e10cSrcweir IDispEventImpl() 1003cdf0e10cSrcweir { 1004cdf0e10cSrcweir@@ -4475,6 +4509,11 @@ 1005cdf0e10cSrcweir } 1006cdf0e10cSrcweir }; 1007cdf0e10cSrcweir 1008cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class ThreadModel = CComObjectThreadModel> 1009cdf0e10cSrcweir+class ATL_NO_VTABLE CComEnum; 1010cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel = CComObjectThreadModel> 1011cdf0e10cSrcweir+class ATL_NO_VTABLE CComEnumOnSTL; 1012cdf0e10cSrcweir+ 1013cdf0e10cSrcweir 1014cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////// 1015cdf0e10cSrcweir // CComEnumImpl 1016cdf0e10cSrcweir@@ -4746,7 +4785,7 @@ 1017cdf0e10cSrcweir return S_OK; 1018cdf0e10cSrcweir } 1019cdf0e10cSrcweir 1020cdf0e10cSrcweir-template <class Base, const IID* piid, class T, class Copy, class ThreadModel = CComObjectThreadModel> 1021cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class ThreadModel> 1022cdf0e10cSrcweir class ATL_NO_VTABLE CComEnum : 1023cdf0e10cSrcweir public CComEnumImpl<Base, piid, T, Copy>, 1024cdf0e10cSrcweir public CComObjectRootEx< ThreadModel > 1025cdf0e10cSrcweir@@ -4868,7 +4907,7 @@ 1026cdf0e10cSrcweir return hRes; 1027cdf0e10cSrcweir } 1028cdf0e10cSrcweir 1029cdf0e10cSrcweir-template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel = CComObjectThreadModel> 1030cdf0e10cSrcweir+template <class Base, const IID* piid, class T, class Copy, class CollType, class ThreadModel> 1031cdf0e10cSrcweir class ATL_NO_VTABLE CComEnumOnSTL : 1032cdf0e10cSrcweir public IEnumOnSTLImpl<Base, piid, T, Copy, CollType>, 1033cdf0e10cSrcweir public CComObjectRootEx< ThreadModel > 1034cdf0e10cSrcweir@@ -4901,7 +4940,7 @@ 1035cdf0e10cSrcweir return E_INVALIDARG; 1036cdf0e10cSrcweir HRESULT hr = E_FAIL; 1037cdf0e10cSrcweir Index--; 1038cdf0e10cSrcweir- CollType::iterator iter = m_coll.begin(); 1039cdf0e10cSrcweir+ typename CollType::iterator iter = m_coll.begin(); 1040cdf0e10cSrcweir while (iter != m_coll.end() && Index > 0) 1041cdf0e10cSrcweir { 1042cdf0e10cSrcweir iter++; 1043cdf0e10cSrcweir@@ -5314,7 +5353,7 @@ 1044cdf0e10cSrcweir if (InlineIsEqualGUID(riid, IID_IConnectionPoint) || InlineIsEqualUnknown(riid)) 1045cdf0e10cSrcweir { 1046cdf0e10cSrcweir *ppvObject = this; 1047cdf0e10cSrcweir- AddRef(); 1048cdf0e10cSrcweir+ this->AddRef(); 1049cdf0e10cSrcweir #ifdef _ATL_DEBUG_INTERFACES 1050cdf0e10cSrcweir _Module.AddThunk((IUnknown**)ppvObject, _T("IConnectionPointImpl"), riid); 1051cdf0e10cSrcweir #endif // _ATL_DEBUG_INTERFACES 1052cdf0e10cSrcweir--- include/atl/atlconv.h.orig 2005-04-14 17:54:32.000000000 +0900 1053cdf0e10cSrcweir+++ include/atl/atlconv.h 2007-12-31 07:29:34.759750000 +0900 1054cdf0e10cSrcweir@@ -10,6 +10,9 @@ 1055cdf0e10cSrcweir 1056cdf0e10cSrcweir #ifndef __ATLCONV_H__ 1057cdf0e10cSrcweir #define __ATLCONV_H__ 1058cdf0e10cSrcweir+#if __GNUC__ >=3 1059cdf0e10cSrcweir+#pragma GCC system_header 1060cdf0e10cSrcweir+#endif 1061cdf0e10cSrcweir 1062cdf0e10cSrcweir #ifndef __cplusplus 1063cdf0e10cSrcweir #error ATL requires C++ compilation (use a .cpp suffix) 1064cdf0e10cSrcweir@@ -30,7 +33,11 @@ 1065cdf0e10cSrcweir // Following code is to avoid alloca causing a stack overflow. 1066cdf0e10cSrcweir // It is intended for use from the _ATL_SAFE_ALLOCA macros 1067cdf0e10cSrcweir // or Conversion macros. 1068cdf0e10cSrcweir-__declspec(selectany) DWORD _Atlosplatform = 0; 1069cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 1070cdf0e10cSrcweir+DWORD _Atlosplatform = 0; 1071cdf0e10cSrcweir+#else 1072cdf0e10cSrcweir+extern DWORD _Atlosplatform; 1073cdf0e10cSrcweir+#endif 1074cdf0e10cSrcweir inline BOOL _AtlGetVersionEx() 1075cdf0e10cSrcweir { 1076cdf0e10cSrcweir OSVERSIONINFO osi; 1077cdf0e10cSrcweir@@ -156,8 +163,11 @@ 1078cdf0e10cSrcweir #pragma prefast(suppress:515, "Atlresetstkoflw is the same as resetstkoflw") 1079cdf0e10cSrcweir 1080cdf0e10cSrcweir // Verifies if sufficient space is available on the stack. 1081cdf0e10cSrcweir-inline bool _AtlVerifyStackAvailable(SIZE_T Size) 1082cdf0e10cSrcweir+inline bool _AtlVerifyStackAvailable(SIZE_T /*Size*/) 1083cdf0e10cSrcweir { 1084cdf0e10cSrcweir+#if 1 1085cdf0e10cSrcweir+ return false; 1086cdf0e10cSrcweir+#else 1087cdf0e10cSrcweir bool bStackAvailable = true; 1088cdf0e10cSrcweir 1089cdf0e10cSrcweir __try 1090cdf0e10cSrcweir@@ -173,6 +183,7 @@ 1091cdf0e10cSrcweir _Atlresetstkoflw(); 1092cdf0e10cSrcweir } 1093cdf0e10cSrcweir return bStackAvailable; 1094cdf0e10cSrcweir+#endif 1095cdf0e10cSrcweir } 1096cdf0e10cSrcweir 1097cdf0e10cSrcweir #pragma prefast(pop) 1098cdf0e10cSrcweir@@ -281,15 +292,15 @@ 1099cdf0e10cSrcweir 1100cdf0e10cSrcweir #ifdef _CONVERSION_USES_THREAD_LOCALE 1101cdf0e10cSrcweir #ifndef _DEBUG 1102cdf0e10cSrcweir- #define USES_CONVERSION int _convert; _convert; UINT _acp = GetACP(); _acp; LPCWSTR _lpw; _lpw; LPCSTR _lpa; _lpa 1103cdf0e10cSrcweir+ #define USES_CONVERSION int _convert; (void)_convert; UINT _acp = GetACP(); (void)_acp; LPCWSTR _lpw; (void)_lpw; LPCSTR _lpa; (void)_lpa 1104cdf0e10cSrcweir #else 1105cdf0e10cSrcweir- #define USES_CONVERSION int _convert = 0; _convert; UINT _acp = GetACP(); _acp; LPCWSTR _lpw = NULL; _lpw; LPCSTR _lpa = NULL; _lpa 1106cdf0e10cSrcweir+ #define USES_CONVERSION int _convert = 0; (void)_convert; UINT _acp = GetACP(); (void)_acp; LPCWSTR _lpw = NULL; (void)_lpw; LPCSTR _lpa = NULL; (void)_lpa 1107cdf0e10cSrcweir #endif 1108cdf0e10cSrcweir #else 1109cdf0e10cSrcweir #ifndef _DEBUG 1110cdf0e10cSrcweir- #define USES_CONVERSION int _convert; _convert; UINT _acp = CP_ACP; _acp; LPCWSTR _lpw; _lpw; LPCSTR _lpa; _lpa 1111cdf0e10cSrcweir+ #define USES_CONVERSION int _convert; (void)_convert; UINT _acp = CP_ACP; (void)_acp; LPCWSTR _lpw; (void)_lpw; LPCSTR _lpa; (void)_lpa 1112cdf0e10cSrcweir #else 1113cdf0e10cSrcweir- #define USES_CONVERSION int _convert = 0; _convert; UINT _acp = CP_ACP; _acp; LPCWSTR _lpw = NULL; _lpw; LPCSTR _lpa = NULL; _lpa 1114cdf0e10cSrcweir+ #define USES_CONVERSION int _convert = 0; (void)_convert; UINT _acp = CP_ACP; (void)_acp; LPCWSTR _lpw = NULL; (void)_lpw; LPCSTR _lpa = NULL; (void)_lpa 1115cdf0e10cSrcweir #endif 1116cdf0e10cSrcweir #endif 1117cdf0e10cSrcweir 1118cdf0e10cSrcweir--- include/atl/atlctl.h.orig 2005-04-14 17:54:32.000000000 +0900 1119cdf0e10cSrcweir+++ include/atl/atlctl.h 2009-04-19 13:31:15.146000000 +0900 1120cdf0e10cSrcweir@@ -10,6 +10,9 @@ 1121cdf0e10cSrcweir 1122cdf0e10cSrcweir #ifndef __ATLCTL_H__ 1123cdf0e10cSrcweir #define __ATLCTL_H__ 1124cdf0e10cSrcweir+#if __GNUC__ >=3 1125cdf0e10cSrcweir+#pragma GCC system_header 1126cdf0e10cSrcweir+#endif 1127cdf0e10cSrcweir 1128cdf0e10cSrcweir #ifndef __cplusplus 1129cdf0e10cSrcweir #error ATL requires C++ compilation (use a .cpp suffix) 1130cdf0e10cSrcweir@@ -57,7 +60,7 @@ 1131cdf0e10cSrcweir namespace ATL 1132cdf0e10cSrcweir { 1133cdf0e10cSrcweir 1134cdf0e10cSrcweir-#pragma pack(push, _ATL_PACKING) 1135cdf0e10cSrcweir+#pragma pack(push, 8) 1136cdf0e10cSrcweir 1137cdf0e10cSrcweir // Forward declarations 1138cdf0e10cSrcweir // 1139cdf0e10cSrcweir@@ -142,7 +145,9 @@ 1140cdf0e10cSrcweir CComControlBase(HWND& h) : m_hWndCD(h) 1141cdf0e10cSrcweir { 1142cdf0e10cSrcweir memset(this, 0, sizeof(CComControlBase)); 1143cdf0e10cSrcweir- m_phWndCD = &h; 1144cdf0e10cSrcweir+ // previous element of m_hWndCD in this class is m_rcPos 1145cdf0e10cSrcweir+ *reinterpret_cast<HWND **>(reinterpret_cast<DWORD>(reinterpret_cast<char *>(&m_rcPos)+sizeof(m_rcPos)+(__alignof__(m_hWndCD)-1))&(-(__alignof__(m_hWndCD))))=&h; 1146cdf0e10cSrcweir+// m_phWndCD = &h; 1147cdf0e10cSrcweir m_sizeExtent.cx = 2*2540; 1148cdf0e10cSrcweir m_sizeExtent.cy = 2*2540; 1149cdf0e10cSrcweir m_sizeNatural = m_sizeExtent; 1150cdf0e10cSrcweir@@ -530,13 +535,13 @@ 1151cdf0e10cSrcweir SIZE m_sizeNatural; //unscaled size in himetric 1152cdf0e10cSrcweir SIZE m_sizeExtent; //current extents in himetric 1153cdf0e10cSrcweir RECT m_rcPos; // position in pixels 1154cdf0e10cSrcweir-#pragma warning(disable: 4510 4610) // unnamed union 1155cdf0e10cSrcweir- union 1156cdf0e10cSrcweir- { 1157cdf0e10cSrcweir+//#pragma warning(disable: 4510 4610) // unnamed union 1158cdf0e10cSrcweir+// union 1159cdf0e10cSrcweir+// { 1160cdf0e10cSrcweir HWND& m_hWndCD; 1161cdf0e10cSrcweir- HWND* m_phWndCD; 1162cdf0e10cSrcweir- }; 1163cdf0e10cSrcweir-#pragma warning(default: 4510 4610) 1164cdf0e10cSrcweir+// HWND* m_phWndCD; 1165cdf0e10cSrcweir+// }; 1166cdf0e10cSrcweir+//#pragma warning(default: 4510 4610) 1167cdf0e10cSrcweir union 1168cdf0e10cSrcweir { 1169cdf0e10cSrcweir // m_nFreezeEvents is the only one actually used 1170cdf0e10cSrcweir@@ -1362,7 +1367,7 @@ 1171cdf0e10cSrcweir class ATL_NO_VTABLE CComControl : public CComControlBase, public WinBase 1172cdf0e10cSrcweir { 1173cdf0e10cSrcweir public: 1174cdf0e10cSrcweir- CComControl() : CComControlBase(m_hWnd) {} 1175cdf0e10cSrcweir+ CComControl() : CComControlBase(this->m_hWnd) {} 1176cdf0e10cSrcweir HRESULT FireOnRequestEdit(DISPID dispID) 1177cdf0e10cSrcweir { 1178cdf0e10cSrcweir T* pT = static_cast<T*>(this); 1179cdf0e10cSrcweir@@ -1401,6 +1406,8 @@ 1180cdf0e10cSrcweir class CComCompositeControl : public CComControl< T, CAxDialogImpl< T > > 1181cdf0e10cSrcweir { 1182cdf0e10cSrcweir public: 1183cdf0e10cSrcweir+ using CComControl< T, CAxDialogImpl< T > >::m_hWnd; 1184cdf0e10cSrcweir+ using CComControl< T, CAxDialogImpl< T > >::GetNextDlgTabItem; 1185cdf0e10cSrcweir CComCompositeControl() 1186cdf0e10cSrcweir { 1187cdf0e10cSrcweir m_hbrBackground = NULL; 1188cdf0e10cSrcweir@@ -1429,7 +1436,7 @@ 1189cdf0e10cSrcweir m_hbrBackground = NULL; 1190cdf0e10cSrcweir } 1191cdf0e10cSrcweir OLE_COLOR clr; 1192cdf0e10cSrcweir- HRESULT hr = GetAmbientBackColor(clr); 1193cdf0e10cSrcweir+ HRESULT hr = this->GetAmbientBackColor(clr); 1194cdf0e10cSrcweir if (SUCCEEDED(hr)) 1195cdf0e10cSrcweir { 1196cdf0e10cSrcweir COLORREF rgb; 1197cdf0e10cSrcweir@@ -1443,7 +1450,7 @@ 1198cdf0e10cSrcweir { 1199cdf0e10cSrcweir CAxWindow wnd(hwnd); 1200cdf0e10cSrcweir CComPtr<IAxWinAmbientDispatch> spDispatch; 1201cdf0e10cSrcweir- wnd.QueryHost(&spDispatch); 1202cdf0e10cSrcweir+ wnd.QueryHost(IID_IAxWinAmbientDispatch, (void**)&spDispatch); 1203cdf0e10cSrcweir if (spDispatch != NULL) 1204cdf0e10cSrcweir spDispatch->put_BackColor((OLE_COLOR)l); 1205cdf0e10cSrcweir return TRUE; 1206cdf0e10cSrcweir@@ -1458,10 +1465,10 @@ 1207cdf0e10cSrcweir } 1208cdf0e10cSrcweir HWND Create(HWND hWndParent, RECT& /*rcPos*/, LPARAM dwInitParam = NULL) 1209cdf0e10cSrcweir { 1210cdf0e10cSrcweir- CComControl< T, CAxDialogImpl< T > >::Create(hWndParent, dwInitParam); 1211cdf0e10cSrcweir+ this->Create(hWndParent, dwInitParam); 1212cdf0e10cSrcweir SetBackgroundColorFromAmbient(); 1213cdf0e10cSrcweir if (m_hWnd != NULL) 1214cdf0e10cSrcweir- ShowWindow(SW_SHOWNOACTIVATE); 1215cdf0e10cSrcweir+ this->ShowWindow(SW_SHOWNOACTIVATE); 1216cdf0e10cSrcweir return m_hWnd; 1217cdf0e10cSrcweir } 1218cdf0e10cSrcweir BOOL CalcExtent(SIZE& size) 1219cdf0e10cSrcweir@@ -1488,7 +1495,7 @@ 1220cdf0e10cSrcweir return FALSE; 1221cdf0e10cSrcweir // find a direct child of the dialog from the window that has focus 1222cdf0e10cSrcweir HWND hWndCtl = ::GetFocus(); 1223cdf0e10cSrcweir- if (IsChild(hWndCtl) && ::GetParent(hWndCtl) != m_hWnd) 1224cdf0e10cSrcweir+ if (this->IsChild(hWndCtl) && ::GetParent(hWndCtl) != m_hWnd) 1225cdf0e10cSrcweir { 1226cdf0e10cSrcweir do 1227cdf0e10cSrcweir { 1228cdf0e10cSrcweir@@ -1546,7 +1553,7 @@ 1229cdf0e10cSrcweir break; 1230cdf0e10cSrcweir } 1231cdf0e10cSrcweir 1232cdf0e10cSrcweir- return IsDialogMessage(pMsg); 1233cdf0e10cSrcweir+ return this->IsDialogMessage(pMsg); 1234cdf0e10cSrcweir } 1235cdf0e10cSrcweir HRESULT IOleInPlaceObject_InPlaceDeactivate(void) 1236cdf0e10cSrcweir { 1237cdf0e10cSrcweir@@ -1563,7 +1570,7 @@ 1238cdf0e10cSrcweir } 1239cdf0e10cSrcweir virtual HRESULT OnDraw(ATL_DRAWINFO& di) 1240cdf0e10cSrcweir { 1241cdf0e10cSrcweir- if(!m_bInPlaceActive) 1242cdf0e10cSrcweir+ if(!this->m_bInPlaceActive) 1243cdf0e10cSrcweir { 1244cdf0e10cSrcweir HPEN hPen = (HPEN)::GetStockObject(BLACK_PEN); 1245cdf0e10cSrcweir HBRUSH hBrush = (HBRUSH)::GetStockObject(GRAY_BRUSH); 1246cdf0e10cSrcweir@@ -1626,7 +1633,7 @@ 1247cdf0e10cSrcweir } 1248cdf0e10cSrcweir STDMETHOD(OnAmbientPropertyChange)(DISPID dispid) 1249cdf0e10cSrcweir { 1250cdf0e10cSrcweir- dispid; 1251cdf0e10cSrcweir+ (void)dispid; 1252cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("IOleControlImpl::OnAmbientPropertyChange\n")); 1253cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T(" -- DISPID = %d (%d)\n"), dispid); 1254cdf0e10cSrcweir return S_OK; 1255cdf0e10cSrcweir@@ -2905,7 +2912,7 @@ 1256cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("~CBindStatusCallback\n")); 1257cdf0e10cSrcweir } 1258cdf0e10cSrcweir 1259cdf0e10cSrcweir- STDMETHOD(OnStartBinding)(DWORD dwReserved, IBinding *pBinding) 1260cdf0e10cSrcweir+ STDMETHOD(OnStartBinding)(DWORD /*dwReserved*/, IBinding *pBinding) 1261cdf0e10cSrcweir { 1262cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnStartBinding\n")); 1263cdf0e10cSrcweir m_spBinding = pBinding; 1264cdf0e10cSrcweir@@ -2923,19 +2930,19 @@ 1265cdf0e10cSrcweir return S_OK; 1266cdf0e10cSrcweir } 1267cdf0e10cSrcweir 1268cdf0e10cSrcweir- STDMETHOD(OnLowResource)(DWORD reserved) 1269cdf0e10cSrcweir+ STDMETHOD(OnLowResource)(DWORD /*reserved*/) 1270cdf0e10cSrcweir { 1271cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnLowResource")); 1272cdf0e10cSrcweir return S_OK; 1273cdf0e10cSrcweir } 1274cdf0e10cSrcweir 1275cdf0e10cSrcweir- STDMETHOD(OnProgress)(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) 1276cdf0e10cSrcweir+ STDMETHOD(OnProgress)(ULONG /*ulProgress*/, ULONG /*ulProgressMax*/, ULONG /*ulStatusCode*/, LPCWSTR /*szStatusText*/) 1277cdf0e10cSrcweir { 1278cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnProgress")); 1279cdf0e10cSrcweir return S_OK; 1280cdf0e10cSrcweir } 1281cdf0e10cSrcweir 1282cdf0e10cSrcweir- STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR szError) 1283cdf0e10cSrcweir+ STDMETHOD(OnStopBinding)(HRESULT /*hresult*/, LPCWSTR /*szError*/) 1284cdf0e10cSrcweir { 1285cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnStopBinding\n")); 1286cdf0e10cSrcweir (m_pT->*m_pFunc)(this, NULL, 0); 1287cdf0e10cSrcweir@@ -2962,7 +2969,7 @@ 1288cdf0e10cSrcweir return S_OK; 1289cdf0e10cSrcweir } 1290cdf0e10cSrcweir 1291cdf0e10cSrcweir- STDMETHOD(OnDataAvailable)(DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) 1292cdf0e10cSrcweir+ STDMETHOD(OnDataAvailable)(DWORD grfBSCF, DWORD dwSize, FORMATETC */*pformatetc*/, STGMEDIUM *pstgmed) 1293cdf0e10cSrcweir { 1294cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnDataAvailable\n")); 1295cdf0e10cSrcweir HRESULT hr = S_OK; 1296cdf0e10cSrcweir@@ -3005,7 +3012,7 @@ 1297cdf0e10cSrcweir return hr; 1298cdf0e10cSrcweir } 1299cdf0e10cSrcweir 1300cdf0e10cSrcweir- STDMETHOD(OnObjectAvailable)(REFIID riid, IUnknown *punk) 1301cdf0e10cSrcweir+ STDMETHOD(OnObjectAvailable)(REFIID /*riid*/, IUnknown */*punk*/) 1302cdf0e10cSrcweir { 1303cdf0e10cSrcweir ATLTRACE2(atlTraceControls,2,_T("CBindStatusCallback::OnObjectAvailable")); 1304cdf0e10cSrcweir return S_OK; 1305cdf0e10cSrcweir--- include/atl/atlwin.h.orig 2005-04-14 17:54:32.000000000 +0900 1306cdf0e10cSrcweir+++ include/atl/atlwin.h 2007-12-31 07:29:28.525375000 +0900 1307cdf0e10cSrcweir@@ -10,6 +10,9 @@ 1308cdf0e10cSrcweir 1309cdf0e10cSrcweir #ifndef __ATLWIN_H__ 1310cdf0e10cSrcweir #define __ATLWIN_H__ 1311cdf0e10cSrcweir+#if __GNUC__ >=3 1312cdf0e10cSrcweir+#pragma GCC system_header 1313cdf0e10cSrcweir+#endif 1314cdf0e10cSrcweir 1315cdf0e10cSrcweir #ifndef __cplusplus 1316cdf0e10cSrcweir #error ATL requires C++ compilation (use a .cpp suffix) 1317cdf0e10cSrcweir@@ -99,6 +102,8 @@ 1318cdf0e10cSrcweir #else 1319cdf0e10cSrcweir #define CWndClassInfo CWndClassInfoA 1320cdf0e10cSrcweir #endif 1321cdf0e10cSrcweir+template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0> class CWinTraits; 1322cdf0e10cSrcweir+typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0> CControlWinTraits; 1323cdf0e10cSrcweir template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits> class CWindowImpl; 1324cdf0e10cSrcweir template <class T, class TBase = CWindow> class CDialogImpl; 1325cdf0e10cSrcweir #ifndef _ATL_NO_HOSTING 1326cdf0e10cSrcweir@@ -658,6 +663,13 @@ 1327cdf0e10cSrcweir ATLASSERT(::IsWindow(m_hWnd)); 1328cdf0e10cSrcweir return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount); 1329cdf0e10cSrcweir } 1330cdf0e10cSrcweir+ 1331cdf0e10cSrcweir+ HWND GetDlgItem(int nID) const 1332cdf0e10cSrcweir+ { 1333cdf0e10cSrcweir+ ATLASSERT(::IsWindow(m_hWnd)); 1334cdf0e10cSrcweir+ return ::GetDlgItem(m_hWnd, nID); 1335cdf0e10cSrcweir+ } 1336cdf0e10cSrcweir+ 1337cdf0e10cSrcweir BOOL GetDlgItemText(int nID, BSTR& bstrText) const 1338cdf0e10cSrcweir { 1339cdf0e10cSrcweir ATLASSERT(::IsWindow(m_hWnd)); 1340cdf0e10cSrcweir@@ -847,12 +859,6 @@ 1341cdf0e10cSrcweir return (int)::SetWindowLong(m_hWnd, GWL_ID, nID); 1342cdf0e10cSrcweir } 1343cdf0e10cSrcweir 1344cdf0e10cSrcweir- HWND GetDlgItem(int nID) const 1345cdf0e10cSrcweir- { 1346cdf0e10cSrcweir- ATLASSERT(::IsWindow(m_hWnd)); 1347cdf0e10cSrcweir- return ::GetDlgItem(m_hWnd, nID); 1348cdf0e10cSrcweir- } 1349cdf0e10cSrcweir- 1350cdf0e10cSrcweir // Alert Functions 1351cdf0e10cSrcweir 1352cdf0e10cSrcweir BOOL FlashWindow(BOOL bInvert) 1353cdf0e10cSrcweir@@ -1319,7 +1325,9 @@ 1354cdf0e10cSrcweir } 1355cdf0e10cSrcweir }; 1356cdf0e10cSrcweir 1357cdf0e10cSrcweir-_declspec(selectany) RECT CWindow::rcDefault = { CW_USEDEFAULT, CW_USEDEFAULT, 0, 0 }; 1358cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 1359cdf0e10cSrcweir+RECT CWindow::rcDefault = { CW_USEDEFAULT, CW_USEDEFAULT, 0, 0 }; 1360cdf0e10cSrcweir+#endif 1361cdf0e10cSrcweir 1362cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////// 1363cdf0e10cSrcweir // CAxWindow - client side for an ActiveX host window 1364cdf0e10cSrcweir@@ -1330,6 +1338,7 @@ 1365cdf0e10cSrcweir class CAxWindowT : public TBase 1366cdf0e10cSrcweir { 1367cdf0e10cSrcweir public: 1368cdf0e10cSrcweir+ using TBase::m_hWnd; 1369cdf0e10cSrcweir // Constructors 1370cdf0e10cSrcweir CAxWindowT(HWND hWnd = NULL) : TBase(hWnd) 1371cdf0e10cSrcweir { } 1372cdf0e10cSrcweir@@ -1439,11 +1448,13 @@ 1373cdf0e10cSrcweir hr = spUnk->QueryInterface(iid, ppUnk); 1374cdf0e10cSrcweir return hr; 1375cdf0e10cSrcweir } 1376cdf0e10cSrcweir+#if 0 1377cdf0e10cSrcweir template <class Q> 1378cdf0e10cSrcweir HRESULT QueryHost(Q** ppUnk) 1379cdf0e10cSrcweir { 1380cdf0e10cSrcweir return QueryHost(__uuidof(Q), (void**)ppUnk); 1381cdf0e10cSrcweir } 1382cdf0e10cSrcweir+#endif 1383cdf0e10cSrcweir HRESULT QueryControl(REFIID iid, void** ppUnk) 1384cdf0e10cSrcweir { 1385cdf0e10cSrcweir ATLASSERT(ppUnk != NULL); 1386cdf0e10cSrcweir@@ -1459,11 +1470,13 @@ 1387cdf0e10cSrcweir hr = spUnk->QueryInterface(iid, ppUnk); 1388cdf0e10cSrcweir return hr; 1389cdf0e10cSrcweir } 1390cdf0e10cSrcweir+#if 0 1391cdf0e10cSrcweir template <class Q> 1392cdf0e10cSrcweir HRESULT QueryControl(Q** ppUnk) 1393cdf0e10cSrcweir { 1394cdf0e10cSrcweir return QueryControl(__uuidof(Q), (void**)ppUnk); 1395cdf0e10cSrcweir } 1396cdf0e10cSrcweir+#endif 1397cdf0e10cSrcweir HRESULT SetExternalDispatch(IDispatch* pDisp) 1398cdf0e10cSrcweir { 1399cdf0e10cSrcweir HRESULT hr; 1400cdf0e10cSrcweir@@ -1521,12 +1534,12 @@ 1401cdf0e10cSrcweir BOOL ProcessWindowMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult, DWORD dwMsgMapID = 0) \ 1402cdf0e10cSrcweir { \ 1403cdf0e10cSrcweir BOOL bHandled = TRUE; \ 1404cdf0e10cSrcweir- hWnd; \ 1405cdf0e10cSrcweir- uMsg; \ 1406cdf0e10cSrcweir- wParam; \ 1407cdf0e10cSrcweir- lParam; \ 1408cdf0e10cSrcweir- lResult; \ 1409cdf0e10cSrcweir- bHandled; \ 1410cdf0e10cSrcweir+ (void)hWnd; \ 1411cdf0e10cSrcweir+ (void)uMsg; \ 1412cdf0e10cSrcweir+ (void)wParam; \ 1413cdf0e10cSrcweir+ (void)lParam; \ 1414cdf0e10cSrcweir+ (void)lResult; \ 1415cdf0e10cSrcweir+ (void)bHandled; \ 1416cdf0e10cSrcweir switch(dwMsgMapID) \ 1417cdf0e10cSrcweir { \ 1418cdf0e10cSrcweir case 0: 1419cdf0e10cSrcweir@@ -1750,7 +1763,7 @@ 1420cdf0e10cSrcweir 1421cdf0e10cSrcweir // search for an empty one 1422cdf0e10cSrcweir 1423cdf0e10cSrcweir- for(i = 0; i < m_aChainEntry.GetSize(); i++) 1424cdf0e10cSrcweir+ for(int i = 0; i < m_aChainEntry.GetSize(); i++) 1425cdf0e10cSrcweir { 1426cdf0e10cSrcweir if(m_aChainEntry[i] == NULL) 1427cdf0e10cSrcweir { 1428cdf0e10cSrcweir@@ -1841,7 +1854,7 @@ 1429cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////// 1430cdf0e10cSrcweir // CWinTraits - Defines various default values for a window 1431cdf0e10cSrcweir 1432cdf0e10cSrcweir-template <DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0> 1433cdf0e10cSrcweir+template <DWORD t_dwStyle, DWORD t_dwExStyle> 1434cdf0e10cSrcweir class CWinTraits 1435cdf0e10cSrcweir { 1436cdf0e10cSrcweir public: 1437cdf0e10cSrcweir@@ -1855,7 +1868,7 @@ 1438cdf0e10cSrcweir } 1439cdf0e10cSrcweir }; 1440cdf0e10cSrcweir 1441cdf0e10cSrcweir-typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0> CControlWinTraits; 1442cdf0e10cSrcweir+//typedef CWinTraits<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0> CControlWinTraits; 1443cdf0e10cSrcweir typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE> CFrameWinTraits; 1444cdf0e10cSrcweir typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_MDICHILD> CMDIChildWinTraits; 1445cdf0e10cSrcweir 1446cdf0e10cSrcweir@@ -1882,6 +1895,7 @@ 1447cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImplRoot : public TBase, public CMessageMap 1448cdf0e10cSrcweir { 1449cdf0e10cSrcweir public: 1450cdf0e10cSrcweir+ using TBase::GetDlgItem; 1451cdf0e10cSrcweir CWndProcThunk m_thunk; 1452cdf0e10cSrcweir const MSG* m_pCurrentMsg; 1453cdf0e10cSrcweir 1454cdf0e10cSrcweir@@ -1892,7 +1906,7 @@ 1455cdf0e10cSrcweir ~CWindowImplRoot() 1456cdf0e10cSrcweir { 1457cdf0e10cSrcweir #ifdef _DEBUG 1458cdf0e10cSrcweir- if(m_hWnd != NULL) // should be cleared in WindowProc 1459cdf0e10cSrcweir+ if(this->m_hWnd != NULL) // should be cleared in WindowProc 1460cdf0e10cSrcweir { 1461cdf0e10cSrcweir ATLTRACE2(atlTraceWindowing, 0, _T("ERROR - Object deleted before window was destroyed\n")); 1462cdf0e10cSrcweir ATLASSERT(FALSE); 1463cdf0e10cSrcweir@@ -2017,6 +2031,8 @@ 1464cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImplBaseT : public CWindowImplRoot< TBase > 1465cdf0e10cSrcweir { 1466cdf0e10cSrcweir public: 1467cdf0e10cSrcweir+ using CWindowImplRoot< TBase >::m_hWnd; 1468cdf0e10cSrcweir+ using CWindowImplRoot< TBase >::m_thunk; 1469cdf0e10cSrcweir WNDPROC m_pfnSuperWindowProc; 1470cdf0e10cSrcweir 1471cdf0e10cSrcweir CWindowImplBaseT() : m_pfnSuperWindowProc(::DefWindowProc) 1472cdf0e10cSrcweir@@ -2049,7 +2065,7 @@ 1473cdf0e10cSrcweir 1474cdf0e10cSrcweir LRESULT DefWindowProc() 1475cdf0e10cSrcweir { 1476cdf0e10cSrcweir- const MSG* pMsg = m_pCurrentMsg; 1477cdf0e10cSrcweir+ const MSG* pMsg = this->m_pCurrentMsg; 1478cdf0e10cSrcweir LRESULT lRes = 0; 1479cdf0e10cSrcweir if (pMsg != NULL) 1480cdf0e10cSrcweir lRes = DefWindowProc(pMsg->message, pMsg->wParam, pMsg->lParam); 1481cdf0e10cSrcweir@@ -2091,7 +2107,7 @@ 1482cdf0e10cSrcweir if(pOldProc != StartWindowProc) 1483cdf0e10cSrcweir ATLTRACE2(atlTraceWindowing, 0, _T("Subclassing through a hook discarded.\n")); 1484cdf0e10cSrcweir #else 1485cdf0e10cSrcweir- pOldProc; // avoid unused warning 1486cdf0e10cSrcweir+ (void)pOldProc; // avoid unused warning 1487cdf0e10cSrcweir #endif 1488cdf0e10cSrcweir return pProc(hWnd, uMsg, wParam, lParam); 1489cdf0e10cSrcweir } 1490cdf0e10cSrcweir@@ -2219,6 +2235,7 @@ 1491cdf0e10cSrcweir class ATL_NO_VTABLE CWindowImpl : public CWindowImplBaseT< TBase, TWinTraits > 1492cdf0e10cSrcweir { 1493cdf0e10cSrcweir public: 1494cdf0e10cSrcweir+ using CWindowImplBaseT< TBase, TWinTraits >::StartWindowProc; 1495cdf0e10cSrcweir DECLARE_WND_CLASS(NULL) 1496cdf0e10cSrcweir 1497cdf0e10cSrcweir HWND Create(HWND hWndParent, RECT& rcPos, LPCTSTR szWindowName = NULL, 1498cdf0e10cSrcweir@@ -2226,8 +2243,8 @@ 1499cdf0e10cSrcweir UINT nID = 0, LPVOID lpCreateParam = NULL) 1500cdf0e10cSrcweir { 1501cdf0e10cSrcweir if (T::GetWndClassInfo().m_lpszOrigName == NULL) 1502cdf0e10cSrcweir- T::GetWndClassInfo().m_lpszOrigName = GetWndClassName(); 1503cdf0e10cSrcweir- ATOM atom = T::GetWndClassInfo().Register(&m_pfnSuperWindowProc); 1504cdf0e10cSrcweir+ T::GetWndClassInfo().m_lpszOrigName = this->GetWndClassName(); 1505cdf0e10cSrcweir+ ATOM atom = T::GetWndClassInfo().Register(&(this->m_pfnSuperWindowProc)); 1506cdf0e10cSrcweir 1507cdf0e10cSrcweir dwStyle = T::GetWndStyle(dwStyle); 1508cdf0e10cSrcweir dwExStyle = T::GetWndExStyle(dwExStyle); 1509cdf0e10cSrcweir@@ -2244,6 +2261,7 @@ 1510cdf0e10cSrcweir class ATL_NO_VTABLE CDialogImplBaseT : public CWindowImplRoot< TBase > 1511cdf0e10cSrcweir { 1512cdf0e10cSrcweir public: 1513cdf0e10cSrcweir+ using CWindowImplRoot< TBase >::m_hWnd; 1514cdf0e10cSrcweir virtual DLGPROC GetDialogProc() 1515cdf0e10cSrcweir { 1516cdf0e10cSrcweir return DialogProc; 1517cdf0e10cSrcweir@@ -2344,6 +2362,9 @@ 1518cdf0e10cSrcweir class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT< TBase > 1519cdf0e10cSrcweir { 1520cdf0e10cSrcweir public: 1521cdf0e10cSrcweir+ using CDialogImplBaseT< TBase >::m_hWnd; 1522cdf0e10cSrcweir+ using CDialogImplBaseT< TBase >::m_thunk; 1523cdf0e10cSrcweir+ typedef CDialogImplBaseT< TBase > CDialogImplBase_Class; 1524cdf0e10cSrcweir #ifdef _DEBUG 1525cdf0e10cSrcweir bool m_bModal; 1526cdf0e10cSrcweir CDialogImpl() : m_bModal(false) { } 1527cdf0e10cSrcweir@@ -2422,6 +2443,8 @@ 1528cdf0e10cSrcweir class ATL_NO_VTABLE CAxDialogImpl : public CDialogImplBaseT< TBase > 1529cdf0e10cSrcweir { 1530cdf0e10cSrcweir public: 1531cdf0e10cSrcweir+ using CDialogImplBaseT< TBase >::m_hWnd; 1532cdf0e10cSrcweir+ using CDialogImplBaseT< TBase >::m_thunk; 1533cdf0e10cSrcweir #ifdef _DEBUG 1534cdf0e10cSrcweir bool m_bModal; 1535cdf0e10cSrcweir CAxDialogImpl() : m_bModal(false) { } 1536cdf0e10cSrcweir@@ -2515,6 +2538,8 @@ 1537cdf0e10cSrcweir class CContainedWindowT : public TBase 1538cdf0e10cSrcweir { 1539cdf0e10cSrcweir public: 1540cdf0e10cSrcweir+ using TBase::m_hWnd; 1541cdf0e10cSrcweir+ using TBase::GetWndClassName; 1542cdf0e10cSrcweir CWndProcThunk m_thunk; 1543cdf0e10cSrcweir LPCTSTR m_lpszClassName; 1544cdf0e10cSrcweir WNDPROC m_pfnSuperWindowProc; 1545cdf0e10cSrcweir@@ -2536,7 +2561,7 @@ 1546cdf0e10cSrcweir { } 1547cdf0e10cSrcweir 1548cdf0e10cSrcweir CContainedWindowT(CMessageMap* pObject, DWORD dwMsgMapID = 0) 1549cdf0e10cSrcweir- : m_lpszClassName(TBase::GetWndClassName()), 1550cdf0e10cSrcweir+ : m_lpszClassName(GetWndClassName()), 1551cdf0e10cSrcweir m_pfnSuperWindowProc(::DefWindowProc), 1552cdf0e10cSrcweir m_pObject(pObject), m_dwMsgMapID(dwMsgMapID), 1553cdf0e10cSrcweir m_pCurrentMsg(NULL) 1554cdf0e10cSrcweir@@ -2666,7 +2691,7 @@ 1555cdf0e10cSrcweir LPCTSTR szWindowName = NULL, DWORD dwStyle = 0, DWORD dwExStyle = 0, 1556cdf0e10cSrcweir UINT nID = 0, LPVOID lpCreateParam = NULL) 1557cdf0e10cSrcweir { 1558cdf0e10cSrcweir- m_lpszClassName = TBase::GetWndClassName(); 1559cdf0e10cSrcweir+ m_lpszClassName = GetWndClassName(); 1560cdf0e10cSrcweir m_pfnSuperWindowProc = ::DefWindowProc; 1561cdf0e10cSrcweir m_pObject = pObject; 1562cdf0e10cSrcweir m_dwMsgMapID = dwMsgMapID; 1563cdf0e10cSrcweir@@ -2959,8 +2984,11 @@ 1564cdf0e10cSrcweir { 1565cdf0e10cSrcweir 1566cdf0e10cSrcweir ::EnterCriticalSection(&pM->m_csWindowCreate); 1567cdf0e10cSrcweir- __try 1568cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 1569cdf0e10cSrcweir+ __SEHandler _sehandler; 1570cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 1571cdf0e10cSrcweir { 1572cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, &pM->m_csWindowCreate, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection); 1573cdf0e10cSrcweir if(p->m_atom == 0) 1574cdf0e10cSrcweir { 1575cdf0e10cSrcweir HINSTANCE hInst = pM->m_hInst; 1576cdf0e10cSrcweir@@ -2979,7 +3007,7 @@ 1577cdf0e10cSrcweir if(!::GetClassInfoExA(_Module.GetModuleInstance(), p->m_lpszOrigName, &wc)) 1578cdf0e10cSrcweir { 1579cdf0e10cSrcweir fFail = TRUE; 1580cdf0e10cSrcweir- __leave; 1581cdf0e10cSrcweir+ __builtin_longjmp(_sejmpbuf, 1); 1582cdf0e10cSrcweir } 1583cdf0e10cSrcweir } 1584cdf0e10cSrcweir memcpy(&p->m_wc, &wc, sizeof(WNDCLASSEX)); 1585cdf0e10cSrcweir@@ -3011,10 +3039,7 @@ 1586cdf0e10cSrcweir p->m_atom = ::RegisterClassExA(&p->m_wc); 1587cdf0e10cSrcweir } 1588cdf0e10cSrcweir } 1589cdf0e10cSrcweir- __finally 1590cdf0e10cSrcweir- { 1591cdf0e10cSrcweir- ::LeaveCriticalSection(&pM->m_csWindowCreate); 1592cdf0e10cSrcweir- } 1593cdf0e10cSrcweir+ _sehandler.Reset(); 1594cdf0e10cSrcweir } 1595cdf0e10cSrcweir 1596cdf0e10cSrcweir if (fFail) 1597cdf0e10cSrcweir@@ -3038,8 +3063,11 @@ 1598cdf0e10cSrcweir if (p->m_atom == 0) 1599cdf0e10cSrcweir { 1600cdf0e10cSrcweir ::EnterCriticalSection(&pM->m_csWindowCreate); 1601cdf0e10cSrcweir- __try 1602cdf0e10cSrcweir+ jmp_buf _sejmpbuf; 1603cdf0e10cSrcweir+ __SEHandler _sehandler; 1604cdf0e10cSrcweir+ if (__builtin_setjmp(_sejmpbuf) == 0) 1605cdf0e10cSrcweir { 1606cdf0e10cSrcweir+ _sehandler.Set(_sejmpbuf, &pM->m_csWindowCreate, EXCEPTION_CONTINUE_SEARCH, NULL, atlfinalleavecriticalsection); 1607cdf0e10cSrcweir if(p->m_atom == 0) 1608cdf0e10cSrcweir { 1609cdf0e10cSrcweir HINSTANCE hInst = pM->m_hInst; 1610cdf0e10cSrcweir@@ -3058,7 +3086,7 @@ 1611cdf0e10cSrcweir if(!::GetClassInfoExW(_Module.GetModuleInstance(), p->m_lpszOrigName, &wc)) 1612cdf0e10cSrcweir { 1613cdf0e10cSrcweir fFail = TRUE; 1614cdf0e10cSrcweir- __leave; 1615cdf0e10cSrcweir+ __builtin_longjmp(_sejmpbuf, -1); 1616cdf0e10cSrcweir } 1617cdf0e10cSrcweir } 1618cdf0e10cSrcweir memcpy(&p->m_wc, &wc, sizeof(WNDCLASSEX)); 1619cdf0e10cSrcweir@@ -3090,10 +3118,7 @@ 1620cdf0e10cSrcweir p->m_atom = ::RegisterClassExW(&p->m_wc); 1621cdf0e10cSrcweir } 1622cdf0e10cSrcweir } 1623cdf0e10cSrcweir- __finally 1624cdf0e10cSrcweir- { 1625cdf0e10cSrcweir- ::LeaveCriticalSection(&pM->m_csWindowCreate); 1626cdf0e10cSrcweir- } 1627cdf0e10cSrcweir+ _sehandler.Reset(); 1628cdf0e10cSrcweir } 1629cdf0e10cSrcweir 1630cdf0e10cSrcweir if (fFail) 1631cdf0e10cSrcweir--- include/atl/statreg.h.orig 2005-04-14 17:54:34.000000000 +0900 1632cdf0e10cSrcweir+++ include/atl/statreg.h 2006-09-18 20:05:01.468750000 +0900 1633cdf0e10cSrcweir@@ -573,15 +573,16 @@ 1634cdf0e10cSrcweir return hRes; 1635cdf0e10cSrcweir } 1636cdf0e10cSrcweir 1637*07a3d7f1SPedro Giffuni-__declspec(selectany) LPCTSTR CRegParser::rgszNeverDelete[] = //Component Categories 1638cdf0e10cSrcweir+#ifdef _INIT_ATL_COMMON_VARS 1639*07a3d7f1SPedro Giffuni+LPCTSTR CRegParser::rgszNeverDelete[] = //Component Categories 1640cdf0e10cSrcweir { 1641cdf0e10cSrcweir _T("CLSID"), _T("TYPELIB") 1642cdf0e10cSrcweir }; 1643cdf0e10cSrcweir 1644cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::cbNeverDelete = sizeof(rgszNeverDelete) / sizeof(LPCTSTR*); 1645cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::MAX_VALUE=4096; 1646cdf0e10cSrcweir-__declspec(selectany) const int CRegParser::MAX_TYPE=MAX_VALUE; 1647cdf0e10cSrcweir- 1648cdf0e10cSrcweir+const int CRegParser::cbNeverDelete = sizeof(rgszNeverDelete) / sizeof(LPCTSTR*); 1649cdf0e10cSrcweir+const int CRegParser::MAX_VALUE=4096; 1650cdf0e10cSrcweir+const int CRegParser::MAX_TYPE=MAX_VALUE; 1651cdf0e10cSrcweir+#endif 1652cdf0e10cSrcweir 1653cdf0e10cSrcweir inline BOOL CRegParser::VTFromRegType(LPCTSTR szValueType, VARTYPE& vt) 1654cdf0e10cSrcweir { 1655