atl: Host component implementation: IOleInPlaceSiteWindowless.
[wine] / dlls / atl / atlbase.h
1 /*
2  * Implementation of the Active Template Library (atl.dll)
3  *
4  * Copyright 2004 Aric Stewart for CodeWeavers
5  *
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.
10  *
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.
15  *
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
19  */
20
21 #ifndef __WINE_ATLBASE_H__
22 #define __WINE_ATLBASE_H__
23
24 #define COBJMACROS
25
26 #include "atliface.h"
27
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)();
32 typedef LPCWSTR (WINAPI _ATL_DESCRIPTIONFUNCW)();
33 typedef const struct _ATL_CATMAP_ENTRY* (_ATL_CATMAPFUNC)();
34 typedef void (WINAPI _ATL_TERMFUNC)(DWORD dw);
35
36 typedef struct _ATL_OBJMAP_ENTRYA_TAG
37 {
38     const CLSID* pclsid;
39     HRESULT (WINAPI *pfnUpdateRegistry)(BOOL bRegister);
40     _ATL_CREATORFUNC* pfnGetClassObject;
41     _ATL_CREATORFUNC* pfnCreateInstance;
42     IUnknown* pCF;
43     DWORD dwRegister;
44     _ATL_DESCRIPTIONFUNCA* pfnGetObjectDescription;
45     _ATL_CATMAPFUNC* pfnGetCategoryMap;
46     void (WINAPI *pfnObjectMain)(BOOL bStarting);
47 }_ATL_OBJMAP_ENTRYA;
48
49 typedef struct _ATL_OBJMAP_ENTRYW_TAG
50 {
51     const CLSID* pclsid;
52     HRESULT (WINAPI *pfnUpdateRegistry)(BOOL bRegister);
53     _ATL_CREATORFUNC* pfnGetClassObject;
54     _ATL_CREATORFUNC* pfnCreateInstance;
55     IUnknown* pCF;
56     DWORD dwRegister;
57     _ATL_DESCRIPTIONFUNCW* pfnGetObjectDescription;
58     _ATL_CATMAPFUNC* pfnGetCategoryMap;
59     void (WINAPI *pfnObjectMain)(BOOL bStarting);
60 } _ATL_OBJMAP_ENTRYW;
61
62
63 typedef struct _ATL_TERMFUNC_ELEM_TAG
64 {
65     _ATL_TERMFUNC* pFunc;
66     DWORD_PTR dw;
67     struct _ATL_TERMFUNC_ELEM_TAG* pNext;
68 } _ATL_TERMFUNC_ELEM;
69
70 typedef struct _AtlCreateWndData_TAG
71 {
72     void* m_pThis;
73     DWORD m_dwThreadID;
74     struct _AtlCreateWndData_TAG* m_pNext;
75 } _AtlCreateWndData;
76
77 typedef struct _ATL_MODULEA_TAG
78 {
79     UINT cbSize;
80     HINSTANCE m_hInst;
81     HINSTANCE m_hInstResource;
82     HINSTANCE m_hInstTypeLib;
83     _ATL_OBJMAP_ENTRYA* m_pObjMap;
84     LONG m_nLockCnt;
85     HANDLE m_hHeap;
86     union
87     {
88         CRITICAL_SECTION m_csTypeInfoHolder;
89         CRITICAL_SECTION m_csStaticDataInit;
90     } u;
91     CRITICAL_SECTION m_csWindowCreate;
92     CRITICAL_SECTION m_csObjMap;
93
94     DWORD dwAtlBuildVer;
95     _AtlCreateWndData* m_pCreateWndList;
96     BOOL m_bDestroyHeap;
97     GUID* pguidVer;
98     DWORD m_dwHeaps;
99     HANDLE* m_phHeaps;
100     int m_nHeap;
101     _ATL_TERMFUNC_ELEM* m_pTermFuncs;
102 } _ATL_MODULEA;
103
104 typedef struct _ATL_MODULEW_TAG
105 {
106     UINT cbSize;
107     HINSTANCE m_hInst;
108     HINSTANCE m_hInstResource;
109     HINSTANCE m_hInstTypeLib;
110     _ATL_OBJMAP_ENTRYW* m_pObjMap;
111     LONG m_nLockCnt;
112     HANDLE m_hHeap;
113     union
114     {
115         CRITICAL_SECTION m_csTypeInfoHolder;
116         CRITICAL_SECTION m_csStaticDataInit;
117     } u;
118     CRITICAL_SECTION m_csWindowCreate;
119     CRITICAL_SECTION m_csObjMap;
120
121     DWORD dwAtlBuildVer;
122     _AtlCreateWndData* m_pCreateWndList;
123     BOOL m_bDestroyHeap;
124     GUID* pguidVer;
125     DWORD m_dwHeaps;
126     HANDLE* m_phHeaps;
127     int m_nHeap;
128     _ATL_TERMFUNC_ELEM* m_pTermFuncs;
129 } _ATL_MODULEW;
130
131 typedef struct _ATL_INTMAP_ENTRY_TAG
132 {
133     const IID* piid;
134     DWORD dw;
135     _ATL_CREATORARGFUNC* pFunc;
136 } _ATL_INTMAP_ENTRY;
137
138 struct _ATL_REGMAP_ENTRY
139 {
140     LPCOLESTR szKey;
141     LPCOLESTR szData;
142 };
143
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(LPVOID pThis, const _ATL_INTMAP_ENTRY* pEntries, REFIID iid, LPVOID* ppvObject);
150 HRESULT WINAPI AtlMarshalPtrInProc(IUnknown *pUnk, const IID *iid, IStream **ppStream);
151 void    WINAPI AtlModuleAddCreateWndData(_ATL_MODULEW *pM, _AtlCreateWndData *pData, LPVOID pvObject);
152 HRESULT WINAPI AtlModuleAddTermFunc(_ATL_MODULEW *pM, _ATL_TERMFUNC *pFunc, DWORD_PTR dw);
153 LPVOID  WINAPI AtlModuleExtractCreateWndData(_ATL_MODULEW *pM);
154 HRESULT WINAPI AtlModuleInit(_ATL_MODULEA* pM, _ATL_OBJMAP_ENTRYA* p, HINSTANCE h);
155 HRESULT WINAPI AtlModuleRegisterClassObjects(_ATL_MODULEA* pM, DWORD dwClsContext, DWORD dwFlags);
156 HRESULT WINAPI AtlModuleRegisterServer(_ATL_MODULEW* pM, BOOL bRegTypeLib, const CLSID* pCLSID);
157 HRESULT WINAPI AtlModuleUnregisterServer(_ATL_MODULEW* pM, const CLSID* pCLSID);
158 HRESULT WINAPI AtlModuleUpdateRegistryFromResourceD(_ATL_MODULEW *pM, LPCOLESTR lpszRes, BOOL bRegister, struct _ATL_REGMAP_ENTRY *pMapEntries, IRegistrar *pReg );
159 HRESULT WINAPI AtlModuleUnregisterServerEx(_ATL_MODULEA* pM, BOOL bUnRegTypeLib, const CLSID* pCLSID);
160 HRESULT WINAPI AtlModuleTerm(_ATL_MODULEA* pM);
161 HRESULT WINAPI AtlUnadvise(IUnknown *pUnkCP, const IID * iid, DWORD dw);
162 HRESULT WINAPI AtlUnmarshalPtr(IStream *pStream, const IID *iid, IUnknown **ppUnk);
163
164 #endif /* __WINE_ATLBASE_H__ */