From 147dbf63cdf9f3731ba1c0d30efc57a300bb559c Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 12 Dec 2012 14:56:11 +0100 Subject: [PATCH] atl100: Added AtlWinModuleAddCreateWndData implementation (based on AtlModuleAddCreateWndData). --- dlls/atl100/atl.c | 16 ++++++++++++++++ dlls/atl100/atl100.spec | 2 +- include/atlbase.h | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/dlls/atl100/atl.c b/dlls/atl100/atl.c index 7e273b796d..bbea756f56 100644 --- a/dlls/atl100/atl.c +++ b/dlls/atl100/atl.c @@ -287,6 +287,22 @@ HRESULT WINAPI AtlLoadTypeLib(HINSTANCE inst, LPCOLESTR lpszIndex, return S_OK; } +/*********************************************************************** + * AtlWinModuleAddCreateWndData [atl100.43] + */ +void WINAPI AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE *pM, _AtlCreateWndData *pData, void *pvObject) +{ + TRACE("(%p, %p, %p)\n", pM, pData, pvObject); + + pData->m_pThis = pvObject; + pData->m_dwThreadID = GetCurrentThreadId(); + + EnterCriticalSection(&pM->m_csWindowCreate); + pData->m_pNext = pM->m_pCreateWndList; + pM->m_pCreateWndList = pData; + LeaveCriticalSection(&pM->m_csWindowCreate); +} + /*********************************************************************** * AtlGetVersion [atl100.@] */ diff --git a/dlls/atl100/atl100.spec b/dlls/atl100/atl100.spec index ec8a858c3d..2204187d58 100644 --- a/dlls/atl100/atl100.spec +++ b/dlls/atl100/atl100.spec @@ -26,7 +26,7 @@ 40 stdcall AtlAxCreateControlEx(ptr ptr ptr ptr ptr ptr ptr) 41 stdcall AtlAxAttachControl(ptr ptr ptr) 42 stdcall AtlAxWinInit() -43 stub AtlWinModuleAddCreateWndData +43 stdcall AtlWinModuleAddCreateWndData(ptr ptr ptr) 44 stub AtlWinModuleExtractCreateWndData 45 stub AtlWinModuleRegisterWndClassInfoW 46 stub AtlWinModuleRegisterWndClassInfoA diff --git a/include/atlbase.h b/include/atlbase.h index ce62474156..140a22712e 100644 --- a/include/atlbase.h +++ b/include/atlbase.h @@ -160,6 +160,13 @@ typedef struct _ATL_MODULEW_TAG _ATL_TERMFUNC_ELEM* m_pTermFuncs; } _ATL_MODULEW; +typedef struct +{ + void *m_aT; + int m_nSize; + int m_nAllocSize; +} CSimpleArray; + typedef struct _ATL_MODULE70 { UINT cbSize; @@ -168,10 +175,20 @@ typedef struct _ATL_MODULE70 CComCriticalSection m_csStaticDataInitAndTypeInfo; } _ATL_MODULE70; +typedef struct _ATL_WIN_MODULE70 +{ + UINT cbSize; + CComCriticalSection m_csWindowCreate; + _AtlCreateWndData *m_pCreateWndList; + CSimpleArray /* */ m_rgWindowClassAtoms; +} _ATL_WIN_MODULE70; + #if _ATL_VER >= _ATL_VER_70 typedef _ATL_MODULE70 _ATL_MODULE; +typedef _ATL_WIN_MODULE70 _ATL_WIN_MODULE; #else typedef _ATL_MODULEW _ATL_MODULE; +typedef _ATL_MODULEW _ATL_WIN_MODULE; #endif typedef struct _ATL_INTMAP_ENTRY_TAG @@ -195,6 +212,7 @@ HRESULT WINAPI AtlFreeMarshalStream(IStream *pStream); HRESULT WINAPI AtlInternalQueryInterface(void* pThis, const _ATL_INTMAP_ENTRY* pEntries, REFIID iid, void** ppvObject); HRESULT WINAPI AtlMarshalPtrInProc(IUnknown *pUnk, const IID *iid, IStream **ppStream); void WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData, void* pvObject); +void WINAPI AtlWinModuleAddCreateWndData(_ATL_WIN_MODULE*,_AtlCreateWndData*,void*); HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULE *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw); void WINAPI AtlCallTermFunc(_ATL_MODULE*); void* WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM); -- 2.32.0.93.g670b81a890