1 /*
2 * Copyright 2014 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #define COBJMACROS
20
21 #include <stdarg.h>
22
23 #include "oleacc_private.h"
24
25 #include "wine/debug.h"
26
27 WINE_DEFAULT_DEBUG_CHANNEL(oleacc);
28
AccPropServices_QueryInterface(IAccPropServices * iface,REFIID riid,void ** ppv)29 static HRESULT WINAPI AccPropServices_QueryInterface(IAccPropServices *iface, REFIID riid, void **ppv)
30 {
31 if(IsEqualGUID(&IID_IUnknown, riid)) {
32 TRACE("(IID_IUnknown %p)\n", ppv);
33 *ppv = iface;
34 }else if(IsEqualGUID(&IID_IAccPropServices, riid)) {
35 TRACE("(IID_IAccPropServices %p)\n", ppv);
36 *ppv = iface;
37 }else {
38 FIXME("Unknown iface %s\n", debugstr_guid(riid));
39 *ppv = NULL;
40 return E_NOINTERFACE;
41 }
42
43 IUnknown_AddRef((IUnknown*)*ppv);
44 return S_OK;
45 }
46
AccPropServices_AddRef(IAccPropServices * iface)47 static ULONG WINAPI AccPropServices_AddRef(IAccPropServices *iface)
48 {
49 return 2;
50 }
51
AccPropServices_Release(IAccPropServices * iface)52 static ULONG WINAPI AccPropServices_Release(IAccPropServices *iface)
53 {
54 return 1;
55 }
56
AccPropServices_SetPropValue(IAccPropServices * iface,const BYTE * pIDString,DWORD dwIDStringLen,MSAAPROPID idProp,VARIANT var)57 static HRESULT WINAPI AccPropServices_SetPropValue(IAccPropServices *iface, const BYTE *pIDString,
58 DWORD dwIDStringLen, MSAAPROPID idProp, VARIANT var)
59 {
60 FIXME("(%p %u %s %s)\n", pIDString, dwIDStringLen, debugstr_guid(&idProp), debugstr_variant(&var));
61 return E_NOTIMPL;
62 }
63
AccPropServices_SetPropServer(IAccPropServices * iface,const BYTE * pIDString,DWORD dwIDStringLen,const MSAAPROPID * paProps,int cProps,IAccPropServer * pServer,AnnoScope AnnoScope)64 static HRESULT WINAPI AccPropServices_SetPropServer(IAccPropServices *iface, const BYTE *pIDString,
65 DWORD dwIDStringLen, const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
66 {
67 FIXME("(%p %u %p %d %p %u)\n", pIDString, dwIDStringLen, paProps, cProps, pServer, AnnoScope);
68 return E_NOTIMPL;
69 }
70
AccPropServices_ClearProps(IAccPropServices * iface,const BYTE * pIDString,DWORD dwIDStringLen,const MSAAPROPID * paProps,int cProps)71 static HRESULT WINAPI AccPropServices_ClearProps(IAccPropServices *iface, const BYTE *pIDString,
72 DWORD dwIDStringLen, const MSAAPROPID *paProps, int cProps)
73 {
74 FIXME("(%p %u %p %d)\n", pIDString, dwIDStringLen, paProps, cProps);
75 return E_NOTIMPL;
76 }
77
AccPropServices_SetHwndProp(IAccPropServices * iface,HWND hwnd,DWORD idObject,DWORD idChild,MSAAPROPID idProp,VARIANT var)78 static HRESULT WINAPI AccPropServices_SetHwndProp(IAccPropServices *iface, HWND hwnd, DWORD idObject,
79 DWORD idChild, MSAAPROPID idProp, VARIANT var)
80 {
81 FIXME("(%p %u %u %s %s)\n", hwnd, idObject, idChild, debugstr_guid(&idProp), debugstr_variant(&var));
82 return E_NOTIMPL;
83 }
84
AccPropServices_SetHwndPropStr(IAccPropServices * iface,HWND hwnd,DWORD idObject,DWORD idChild,MSAAPROPID idProp,LPWSTR str)85 static HRESULT WINAPI AccPropServices_SetHwndPropStr(IAccPropServices *iface, HWND hwnd, DWORD idObject,
86 DWORD idChild, MSAAPROPID idProp, LPWSTR str)
87 {
88 FIXME("(%p %u %u %s %s)\n", hwnd, idObject, idChild, debugstr_guid(&idProp), debugstr_w(str));
89 return E_NOTIMPL;
90 }
91
AccPropServices_SetHwndPropServer(IAccPropServices * iface,HWND hwnd,DWORD idObject,DWORD idChild,const MSAAPROPID * paProps,int cProps,IAccPropServer * pServer,AnnoScope AnnoScope)92 static HRESULT WINAPI AccPropServices_SetHwndPropServer(IAccPropServices *iface, HWND hwnd, DWORD idObject,
93 DWORD idChild, const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
94 {
95 FIXME("(%p %u %u %p %d %p %u)\n", hwnd, idObject, idChild, paProps, cProps, pServer, AnnoScope);
96 return E_NOTIMPL;
97 }
98
AccPropServices_ClearHwndProps(IAccPropServices * iface,HWND hwnd,DWORD idObject,DWORD idChild,const MSAAPROPID * paProps,int cProps)99 static HRESULT WINAPI AccPropServices_ClearHwndProps(IAccPropServices *iface, HWND hwnd, DWORD idObject,
100 DWORD idChild, const MSAAPROPID *paProps, int cProps)
101 {
102 FIXME("(%p %u %u %p %d)\n", hwnd, idObject, idChild, paProps, cProps);
103 return E_NOTIMPL;
104 }
105
AccPropServices_ComposeHwndIdentityString(IAccPropServices * iface,HWND hwnd,DWORD idObject,DWORD idChild,BYTE ** ppIDString,DWORD * pdwIDStringLen)106 static HRESULT WINAPI AccPropServices_ComposeHwndIdentityString(IAccPropServices *iface, HWND hwnd,
107 DWORD idObject, DWORD idChild, BYTE **ppIDString, DWORD *pdwIDStringLen)
108 {
109 FIXME("(%p %u %u %p %p)\n", hwnd, idObject, idChild, ppIDString, pdwIDStringLen);
110 return E_NOTIMPL;
111 }
112
AccPropServices_DecomposeHwndIdentityString(IAccPropServices * iface,const BYTE * pIDString,DWORD dwIDStringLen,HWND * phwnd,DWORD * pidObject,DWORD * pidChild)113 static HRESULT WINAPI AccPropServices_DecomposeHwndIdentityString(IAccPropServices *iface, const BYTE *pIDString,
114 DWORD dwIDStringLen, HWND *phwnd, DWORD *pidObject, DWORD *pidChild)
115 {
116 FIXME("(%p %u %p %p %p)\n", pIDString, dwIDStringLen, phwnd, pidObject, pidChild);
117 return E_NOTIMPL;
118 }
119
AccPropServices_SetHmenuProp(IAccPropServices * iface,HMENU hmenu,DWORD idChild,MSAAPROPID idProp,VARIANT var)120 static HRESULT WINAPI AccPropServices_SetHmenuProp(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
121 MSAAPROPID idProp, VARIANT var)
122 {
123 FIXME("(%p %u %s %s)\n", hmenu, idChild, debugstr_guid(&idProp), debugstr_variant(&var));
124 return E_NOTIMPL;
125 }
126
AccPropServices_SetHmenuPropStr(IAccPropServices * iface,HMENU hmenu,DWORD idChild,MSAAPROPID idProp,LPWSTR str)127 static HRESULT WINAPI AccPropServices_SetHmenuPropStr(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
128 MSAAPROPID idProp, LPWSTR str)
129 {
130 FIXME("(%p %u %s %s)\n", hmenu, idChild, debugstr_guid(&idProp), debugstr_w(str));
131 return E_NOTIMPL;
132 }
133
AccPropServices_SetHmenuPropServer(IAccPropServices * iface,HMENU hmenu,DWORD idChild,const MSAAPROPID * paProps,int cProps,IAccPropServer * pServer,AnnoScope AnnoScope)134 static HRESULT WINAPI AccPropServices_SetHmenuPropServer(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
135 const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
136 {
137 FIXME("(%p %u %p %d %p %u)\n", hmenu, idChild, paProps, cProps, pServer, AnnoScope);
138 return E_NOTIMPL;
139 }
140
AccPropServices_ClearHmenuProps(IAccPropServices * iface,HMENU hmenu,DWORD idChild,const MSAAPROPID * paProps,int cProps)141 static HRESULT WINAPI AccPropServices_ClearHmenuProps(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
142 const MSAAPROPID *paProps, int cProps)
143 {
144 FIXME("(%p %u %p %d)\n", hmenu, idChild, paProps, cProps);
145 return E_NOTIMPL;
146 }
147
AccPropServices_ComposeHmenuIdentityString(IAccPropServices * iface,HMENU hmenu,DWORD idChild,BYTE ** ppIDString,DWORD * pdwIDStringLen)148 static HRESULT WINAPI AccPropServices_ComposeHmenuIdentityString(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
149 BYTE **ppIDString, DWORD *pdwIDStringLen)
150 {
151 FIXME("(%p %u %p %p)\n", hmenu, idChild, ppIDString, pdwIDStringLen);
152 return E_NOTIMPL;
153 }
154
AccPropServices_DecomposeHmenuIdentityString(IAccPropServices * iface,const BYTE * pIDString,DWORD dwIDStringLen,HMENU * phmenu,DWORD * pidChild)155 static HRESULT WINAPI AccPropServices_DecomposeHmenuIdentityString(IAccPropServices *iface, const BYTE *pIDString,
156 DWORD dwIDStringLen, HMENU *phmenu, DWORD *pidChild)
157 {
158 FIXME("(%p %u %p %p\n", pIDString, dwIDStringLen, phmenu, pidChild);
159 return E_NOTIMPL;
160 }
161
162 static const IAccPropServicesVtbl AccPropServicesVtbl = {
163 AccPropServices_QueryInterface,
164 AccPropServices_AddRef,
165 AccPropServices_Release,
166 AccPropServices_SetPropValue,
167 AccPropServices_SetPropServer,
168 AccPropServices_ClearProps,
169 AccPropServices_SetHwndProp,
170 AccPropServices_SetHwndPropStr,
171 AccPropServices_SetHwndPropServer,
172 AccPropServices_ClearHwndProps,
173 AccPropServices_ComposeHwndIdentityString,
174 AccPropServices_DecomposeHwndIdentityString,
175 AccPropServices_SetHmenuProp,
176 AccPropServices_SetHmenuPropStr,
177 AccPropServices_SetHmenuPropServer,
178 AccPropServices_ClearHmenuProps,
179 AccPropServices_ComposeHmenuIdentityString,
180 AccPropServices_DecomposeHmenuIdentityString
181 };
182
183 static IAccPropServices AccPropServices = { &AccPropServicesVtbl };
184
ClassFactory_QueryInterface(IClassFactory * iface,REFIID riid,void ** ppv)185 static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
186 {
187 *ppv = NULL;
188
189 if(IsEqualGUID(&IID_IUnknown, riid)) {
190 TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
191 *ppv = iface;
192 }else if(IsEqualGUID(&IID_IClassFactory, riid)) {
193 TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
194 *ppv = iface;
195 }
196
197 if(*ppv) {
198 IUnknown_AddRef((IUnknown*)*ppv);
199 return S_OK;
200 }
201
202 FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
203 return E_NOINTERFACE;
204 }
205
ClassFactory_AddRef(IClassFactory * iface)206 static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
207 {
208 TRACE("(%p)\n", iface);
209 return 2;
210 }
211
ClassFactory_Release(IClassFactory * iface)212 static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
213 {
214 TRACE("(%p)\n", iface);
215 return 1;
216 }
217
ClassFactory_LockServer(IClassFactory * iface,BOOL fLock)218 static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
219 {
220 TRACE("(%p)->(%x)\n", iface, fLock);
221 return S_OK;
222 }
223
CAccPropServices_CreateInstance(IClassFactory * iface,IUnknown * outer,REFIID riid,void ** ppv)224 static HRESULT WINAPI CAccPropServices_CreateInstance(IClassFactory *iface, IUnknown *outer,
225 REFIID riid, void **ppv)
226 {
227 TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
228
229 if(outer) {
230 *ppv = NULL;
231 return CLASS_E_NOAGGREGATION;
232 }
233
234 return IAccPropServices_QueryInterface(&AccPropServices, riid, ppv);
235 }
236
237 static const IClassFactoryVtbl CAccPropServicesFactoryVtbl = {
238 ClassFactory_QueryInterface,
239 ClassFactory_AddRef,
240 ClassFactory_Release,
241 CAccPropServices_CreateInstance,
242 ClassFactory_LockServer
243 };
244
245 static IClassFactory CAccPropServicesFactory = { &CAccPropServicesFactoryVtbl };
246
get_accpropservices_factory(REFIID riid,void ** ppv)247 HRESULT get_accpropservices_factory(REFIID riid, void **ppv)
248 {
249 return IClassFactory_QueryInterface(&CAccPropServicesFactory, riid, ppv);
250 }
251