2 * Implementation of the Active Template Library (atl.dll)
4 * Copyright 2004 Aric Stewart for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_ATLBASE_H__
22 #define __WINE_ATLBASE_H__
28 typedef HRESULT (WINAPI _ATL_CREATORFUNC
)(void* pv
, REFIID riid
, LPVOID
* ppv
);
29 typedef HRESULT (WINAPI _ATL_CREATORARGFUNC
)(void* pv
, REFIID riid
, LPVOID
* ppv
, DWORD dw
);
30 typedef HRESULT (WINAPI _ATL_MODULEFUNC
)(DWORD dw
);
31 typedef LPCSTR (WINAPI _ATL_DESCRIPTIONFUNCA
)(void);
32 typedef LPCWSTR (WINAPI _ATL_DESCRIPTIONFUNCW
)(void);
33 typedef const struct _ATL_CATMAP_ENTRY
* (_ATL_CATMAPFUNC
)(void);
34 typedef void (WINAPI _ATL_TERMFUNC
)(DWORD dw
);
36 typedef struct _ATL_OBJMAP_ENTRYA_TAG
39 HRESULT (WINAPI
*pfnUpdateRegistry
)(BOOL bRegister
);
40 _ATL_CREATORFUNC
* pfnGetClassObject
;
41 _ATL_CREATORFUNC
* pfnCreateInstance
;
44 _ATL_DESCRIPTIONFUNCA
* pfnGetObjectDescription
;
45 _ATL_CATMAPFUNC
* pfnGetCategoryMap
;
46 void (WINAPI
*pfnObjectMain
)(BOOL bStarting
);
49 typedef struct _ATL_OBJMAP_ENTRYW_TAG
52 HRESULT (WINAPI
*pfnUpdateRegistry
)(BOOL bRegister
);
53 _ATL_CREATORFUNC
* pfnGetClassObject
;
54 _ATL_CREATORFUNC
* pfnCreateInstance
;
57 _ATL_DESCRIPTIONFUNCW
* pfnGetObjectDescription
;
58 _ATL_CATMAPFUNC
* pfnGetCategoryMap
;
59 void (WINAPI
*pfnObjectMain
)(BOOL bStarting
);
63 typedef struct _ATL_TERMFUNC_ELEM_TAG
67 struct _ATL_TERMFUNC_ELEM_TAG
* pNext
;
70 typedef struct _AtlCreateWndData_TAG
74 struct _AtlCreateWndData_TAG
* m_pNext
;
77 typedef struct _ATL_MODULEA_TAG
81 HINSTANCE m_hInstResource
;
82 HINSTANCE m_hInstTypeLib
;
83 _ATL_OBJMAP_ENTRYA
* m_pObjMap
;
88 CRITICAL_SECTION m_csTypeInfoHolder
;
89 CRITICAL_SECTION m_csStaticDataInit
;
91 CRITICAL_SECTION m_csWindowCreate
;
92 CRITICAL_SECTION m_csObjMap
;
95 _AtlCreateWndData
* m_pCreateWndList
;
101 _ATL_TERMFUNC_ELEM
* m_pTermFuncs
;
104 typedef struct _ATL_MODULEW_TAG
108 HINSTANCE m_hInstResource
;
109 HINSTANCE m_hInstTypeLib
;
110 _ATL_OBJMAP_ENTRYW
* m_pObjMap
;
115 CRITICAL_SECTION m_csTypeInfoHolder
;
116 CRITICAL_SECTION m_csStaticDataInit
;
118 CRITICAL_SECTION m_csWindowCreate
;
119 CRITICAL_SECTION m_csObjMap
;
122 _AtlCreateWndData
* m_pCreateWndList
;
128 _ATL_TERMFUNC_ELEM
* m_pTermFuncs
;
131 typedef struct _ATL_INTMAP_ENTRY_TAG
135 _ATL_CREATORARGFUNC
* pFunc
;
138 struct _ATL_REGMAP_ENTRY
144 HRESULT WINAPI
AtlAdvise(IUnknown
*pUnkCP
, IUnknown
*pUnk
, const IID
* iid
, LPDWORD dpw
);
145 HRESULT WINAPI
AtlAxAttachControl(IUnknown
*,HWND
,IUnknown
**);
146 HRESULT WINAPI
AtlAxCreateControl(LPCOLESTR
,HWND
,IStream
*,IUnknown
**);
147 HRESULT WINAPI
AtlAxCreateControlEx(LPCOLESTR
,HWND
,IStream
*,IUnknown
**,IUnknown
**,REFIID
,IUnknown
*);
148 HRESULT WINAPI
AtlFreeMarshalStream(IStream
*pStream
);
149 HRESULT WINAPI
AtlInternalQueryInterface(void* pThis
, const _ATL_INTMAP_ENTRY
* pEntries
, REFIID iid
, void** ppvObject
);
150 HRESULT WINAPI
AtlMarshalPtrInProc(IUnknown
*pUnk
, const IID
*iid
, IStream
**ppStream
);
151 void WINAPI
AtlModuleAddCreateWndData(_ATL_MODULEW
*pM
, _AtlCreateWndData
*pData
, void* pvObject
);
152 HRESULT WINAPI
AtlModuleAddTermFunc(_ATL_MODULEW
*pM
, _ATL_TERMFUNC
*pFunc
, DWORD_PTR dw
);
153 void* WINAPI
AtlModuleExtractCreateWndData(_ATL_MODULEW
*pM
);
154 HRESULT WINAPI
AtlModuleInit(_ATL_MODULEW
* pM
, _ATL_OBJMAP_ENTRYW
* p
, HINSTANCE h
);
155 HRESULT WINAPI
AtlModuleLoadTypeLib(_ATL_MODULEW
*pM
, LPCOLESTR lpszIndex
, BSTR
*pbstrPath
, ITypeLib
**ppTypeLib
);
156 HRESULT WINAPI
AtlModuleRegisterClassObjects(_ATL_MODULEW
* pM
, DWORD dwClsContext
, DWORD dwFlags
);
157 HRESULT WINAPI
AtlModuleRegisterServer(_ATL_MODULEW
* pM
, BOOL bRegTypeLib
, const CLSID
* pCLSID
);
158 HRESULT WINAPI
AtlModuleRegisterTypeLib(_ATL_MODULEW
*pM
, LPCOLESTR lpszIndex
);
159 HRESULT WINAPI
AtlModuleUnregisterServer(_ATL_MODULEW
* pM
, const CLSID
* pCLSID
);
160 HRESULT WINAPI
AtlModuleUpdateRegistryFromResourceD(_ATL_MODULEW
*pM
, LPCOLESTR lpszRes
, BOOL bRegister
, struct _ATL_REGMAP_ENTRY
*pMapEntries
, IRegistrar
*pReg
);
161 HRESULT WINAPI
AtlModuleUnregisterServerEx(_ATL_MODULEW
* pM
, BOOL bUnRegTypeLib
, const CLSID
* pCLSID
);
162 HRESULT WINAPI
AtlModuleTerm(_ATL_MODULEW
* pM
);
163 HRESULT WINAPI
AtlUnadvise(IUnknown
*pUnkCP
, const IID
* iid
, DWORD dw
);
164 HRESULT WINAPI
AtlUnmarshalPtr(IStream
*pStream
, const IID
*iid
, IUnknown
**ppUnk
);
166 #endif /* __WINE_ATLBASE_H__ */