ReactOS  0.4.15-dev-1177-g6cb3b62
client.c
Go to the documentation of this file.
1 /*
2  * Copyright 2014 Piotr 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 "oleacc_private.h"
22 
23 #include "wine/debug.h"
24 #include "wine/heap.h"
25 
27 
28 typedef struct {
32 
34 
37 } Client;
38 
39 static inline Client* impl_from_Client(IAccessible *iface)
40 {
41  return CONTAINING_RECORD(iface, Client, IAccessible_iface);
42 }
43 
45 {
46  Client *This = impl_from_Client(iface);
47 
48  TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
49 
50  if(IsEqualIID(riid, &IID_IAccessible) ||
53  *ppv = iface;
54  }else if(IsEqualIID(riid, &IID_IOleWindow)) {
55  *ppv = &This->IOleWindow_iface;
56  }else if(IsEqualIID(riid, &IID_IEnumVARIANT)) {
57  *ppv = &This->IEnumVARIANT_iface;
58  }else {
59  WARN("no interface: %s\n", debugstr_guid(riid));
60  *ppv = NULL;
61  return E_NOINTERFACE;
62  }
63 
64  IAccessible_AddRef(iface);
65  return S_OK;
66 }
67 
69 {
70  Client *This = impl_from_Client(iface);
72 
73  TRACE("(%p) ref = %u\n", This, ref);
74  return ref;
75 }
76 
78 {
79  Client *This = impl_from_Client(iface);
81 
82  TRACE("(%p) ref = %u\n", This, ref);
83 
84  if(!ref)
85  heap_free(This);
86  return ref;
87 }
88 
90 {
91  Client *This = impl_from_Client(iface);
92  FIXME("(%p)->(%p)\n", This, pctinfo);
93  return E_NOTIMPL;
94 }
95 
97  UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
98 {
99  Client *This = impl_from_Client(iface);
100  FIXME("(%p)->(%u %x %p)\n", This, iTInfo, lcid, ppTInfo);
101  return E_NOTIMPL;
102 }
103 
105  LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
106 {
107  Client *This = impl_from_Client(iface);
108  FIXME("(%p)->(%s %p %u %x %p)\n", This, debugstr_guid(riid),
109  rgszNames, cNames, lcid, rgDispId);
110  return E_NOTIMPL;
111 }
112 
113 static HRESULT WINAPI Client_Invoke(IAccessible *iface, DISPID dispIdMember,
114  REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
115  VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
116 {
117  Client *This = impl_from_Client(iface);
118  FIXME("(%p)->(%x %s %x %x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
119  lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
120  return E_NOTIMPL;
121 }
122 
124 {
125  Client *This = impl_from_Client(iface);
126 
127  TRACE("(%p)->(%p)\n", This, ppdispParent);
128 
130  &IID_IDispatch, (void**)ppdispParent);
131 }
132 
133 static HRESULT WINAPI Client_get_accChildCount(IAccessible *iface, LONG *pcountChildren)
134 {
135  Client *This = impl_from_Client(iface);
136  HWND cur;
137 
138  TRACE("(%p)->(%p)\n", This, pcountChildren);
139 
140  *pcountChildren = 0;
141  for(cur = GetWindow(This->hwnd, GW_CHILD); cur; cur = GetWindow(cur, GW_HWNDNEXT))
142  (*pcountChildren)++;
143 
144  return S_OK;
145 }
146 
148  VARIANT varChildID, IDispatch **ppdispChild)
149 {
150  Client *This = impl_from_Client(iface);
151 
152  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varChildID), ppdispChild);
153 
154  *ppdispChild = NULL;
155  return E_INVALIDARG;
156 }
157 
158 static HRESULT WINAPI Client_get_accName(IAccessible *iface, VARIANT varID, BSTR *pszName)
159 {
160  Client *This = impl_from_Client(iface);
161  WCHAR name[1024];
162  UINT i, len;
163 
164  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszName);
165 
166  *pszName = NULL;
167  if(convert_child_id(&varID) != CHILDID_SELF || !IsWindow(This->hwnd))
168  return E_INVALIDARG;
169 
171  if(!len)
172  return S_FALSE;
173 
174  for(i=0; i<len; i++) {
175  if(name[i] == '&') {
176  len--;
177  memmove(name+i, name+i+1, (len-i)*sizeof(WCHAR));
178  break;
179  }
180  }
181 
182  *pszName = SysAllocStringLen(name, len);
183  return *pszName ? S_OK : E_OUTOFMEMORY;
184 }
185 
186 static HRESULT WINAPI Client_get_accValue(IAccessible *iface, VARIANT varID, BSTR *pszValue)
187 {
188  Client *This = impl_from_Client(iface);
189 
190  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszValue);
191 
192  *pszValue = NULL;
193  if(convert_child_id(&varID) != CHILDID_SELF)
194  return E_INVALIDARG;
195  return S_FALSE;
196 }
197 
199  VARIANT varID, BSTR *pszDescription)
200 {
201  Client *This = impl_from_Client(iface);
202 
203  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDescription);
204 
205  *pszDescription = NULL;
206  if(convert_child_id(&varID) != CHILDID_SELF)
207  return E_INVALIDARG;
208  return S_FALSE;
209 }
210 
211 static HRESULT WINAPI Client_get_accRole(IAccessible *iface, VARIANT varID, VARIANT *pvarRole)
212 {
213  Client *This = impl_from_Client(iface);
214 
215  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarRole);
216 
217  if(convert_child_id(&varID) != CHILDID_SELF) {
218  V_VT(pvarRole) = VT_EMPTY;
219  return E_INVALIDARG;
220  }
221 
222  V_VT(pvarRole) = VT_I4;
223  V_I4(pvarRole) = ROLE_SYSTEM_CLIENT;
224  return S_OK;
225 }
226 
227 static HRESULT WINAPI Client_get_accState(IAccessible *iface, VARIANT varID, VARIANT *pvarState)
228 {
229  Client *This = impl_from_Client(iface);
230  LONG style;
231 
232  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarState);
233 
234  if(convert_child_id(&varID) != CHILDID_SELF) {
235  V_VT(pvarState) = VT_EMPTY;
236  return E_INVALIDARG;
237  }
238 
239  V_VT(pvarState) = VT_I4;
240  V_I4(pvarState) = 0;
241 
243  if(style & WS_DISABLED)
244  V_I4(pvarState) |= STATE_SYSTEM_UNAVAILABLE;
245  else if(IsWindow(This->hwnd))
246  V_I4(pvarState) |= STATE_SYSTEM_FOCUSABLE;
247  if(GetFocus() == This->hwnd)
248  V_I4(pvarState) |= STATE_SYSTEM_FOCUSED;
249  if(!(style & WS_VISIBLE))
250  V_I4(pvarState) |= STATE_SYSTEM_INVISIBLE;
251  return S_OK;
252 }
253 
254 static HRESULT WINAPI Client_get_accHelp(IAccessible *iface, VARIANT varID, BSTR *pszHelp)
255 {
256  Client *This = impl_from_Client(iface);
257 
258  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszHelp);
259 
260  *pszHelp = NULL;
261  if(convert_child_id(&varID) != CHILDID_SELF)
262  return E_INVALIDARG;
263  return S_FALSE;
264 }
265 
267  BSTR *pszHelpFile, VARIANT varID, LONG *pidTopic)
268 {
269  Client *This = impl_from_Client(iface);
270  FIXME("(%p)->(%p %s %p)\n", This, pszHelpFile, debugstr_variant(&varID), pidTopic);
271  return E_NOTIMPL;
272 }
273 
275  VARIANT varID, BSTR *pszKeyboardShortcut)
276 {
277  static const WCHAR shortcut_fmt[] = {'A','l','t','+','!',0};
278  Client *This = impl_from_Client(iface);
279  WCHAR name[1024];
280  UINT i, len;
281 
282  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszKeyboardShortcut);
283 
284  *pszKeyboardShortcut = NULL;
285  if(convert_child_id(&varID) != CHILDID_SELF)
286  return E_INVALIDARG;
287 
289  for(i=0; i<len; i++) {
290  if(name[i] == '&')
291  break;
292  }
293  if(i+1 >= len)
294  return S_FALSE;
295 
296  *pszKeyboardShortcut = SysAllocString(shortcut_fmt);
297  if(!*pszKeyboardShortcut)
298  return E_OUTOFMEMORY;
299 
300  (*pszKeyboardShortcut)[4] = name[i+1];
301  return S_OK;
302 }
303 
305 {
306  Client *This = impl_from_Client(iface);
307  FIXME("(%p)->(%p)\n", This, pvarID);
308  return E_NOTIMPL;
309 }
310 
312 {
313  Client *This = impl_from_Client(iface);
314  FIXME("(%p)->(%p)\n", This, pvarID);
315  return E_NOTIMPL;
316 }
317 
319  VARIANT varID, BSTR *pszDefaultAction)
320 {
321  Client *This = impl_from_Client(iface);
322 
323  TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDefaultAction);
324 
325  *pszDefaultAction = NULL;
326  if(convert_child_id(&varID) != CHILDID_SELF)
327  return E_INVALIDARG;
328  return S_FALSE;
329 }
330 
331 static HRESULT WINAPI Client_accSelect(IAccessible *iface, LONG flagsSelect, VARIANT varID)
332 {
333  Client *This = impl_from_Client(iface);
334  FIXME("(%p)->(%x %s)\n", This, flagsSelect, debugstr_variant(&varID));
335  return E_NOTIMPL;
336 }
337 
339  LONG *pyTop, LONG *pcxWidth, LONG *pcyHeight, VARIANT varID)
340 {
341  Client *This = impl_from_Client(iface);
342  RECT rect;
343  POINT pt;
344 
345  TRACE("(%p)->(%p %p %p %p %s)\n", This, pxLeft, pyTop,
346  pcxWidth, pcyHeight, debugstr_variant(&varID));
347 
348  *pxLeft = *pyTop = *pcxWidth = *pcyHeight = 0;
349  if(convert_child_id(&varID) != CHILDID_SELF)
350  return E_INVALIDARG;
351 
352  if(!GetClientRect(This->hwnd, &rect))
353  return S_OK;
354 
355  pt.x = rect.left;
356  pt.y = rect.top;
357  MapWindowPoints(This->hwnd, NULL, &pt, 1);
358  *pxLeft = pt.x;
359  *pyTop = pt.y;
360 
361  pt.x = rect.right;
362  pt.y = rect.bottom;
363  MapWindowPoints(This->hwnd, NULL, &pt, 1);
364  *pcxWidth = pt.x - *pxLeft;
365  *pcyHeight = pt.y - *pyTop;
366  return S_OK;
367 }
368 
370  LONG navDir, VARIANT varStart, VARIANT *pvarEnd)
371 {
372  Client *This = impl_from_Client(iface);
373  FIXME("(%p)->(%d %s %p)\n", This, navDir, debugstr_variant(&varStart), pvarEnd);
374  return E_NOTIMPL;
375 }
376 
378  LONG xLeft, LONG yTop, VARIANT *pvarID)
379 {
380  Client *This = impl_from_Client(iface);
381  HWND child;
382  POINT pt;
383 
384  TRACE("(%p)->(%d %d %p)\n", This, xLeft, yTop, pvarID);
385 
386  V_VT(pvarID) = VT_I4;
387  V_I4(pvarID) = 0;
388 
389  pt.x = xLeft;
390  pt.y = yTop;
391  if(!IsWindowVisible(This->hwnd) || !ScreenToClient(This->hwnd, &pt))
392  return S_OK;
393 
395  if(!child || child==This->hwnd)
396  return S_OK;
397 
398  V_VT(pvarID) = VT_DISPATCH;
400  &IID_IDispatch, (void**)&V_DISPATCH(pvarID));
401 }
402 
404 {
405  Client *This = impl_from_Client(iface);
406  FIXME("(%p)->(%s)\n", This, debugstr_variant(&varID));
407  return E_NOTIMPL;
408 }
409 
410 static HRESULT WINAPI Client_put_accName(IAccessible *iface, VARIANT varID, BSTR pszName)
411 {
412  Client *This = impl_from_Client(iface);
413  FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszName));
414  return E_NOTIMPL;
415 }
416 
417 static HRESULT WINAPI Client_put_accValue(IAccessible *iface, VARIANT varID, BSTR pszValue)
418 {
419  Client *This = impl_from_Client(iface);
420  FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszValue));
421  return E_NOTIMPL;
422 }
423 
424 static const IAccessibleVtbl ClientVtbl = {
453 };
454 
456 {
457  return CONTAINING_RECORD(iface, Client, IOleWindow_iface);
458 }
459 
461 {
463  return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
464 }
465 
467 {
469  return IAccessible_AddRef(&This->IAccessible_iface);
470 }
471 
473 {
475  return IAccessible_Release(&This->IAccessible_iface);
476 }
477 
479 {
481 
482  TRACE("(%p)->(%p)\n", This, phwnd);
483 
484  *phwnd = This->hwnd;
485  return S_OK;
486 }
487 
489 {
491  FIXME("(%p)->(%x)\n", This, fEnterMode);
492  return E_NOTIMPL;
493 }
494 
495 static const IOleWindowVtbl ClientOleWindowVtbl = {
501 };
502 
504 {
505  return CONTAINING_RECORD(iface, Client, IEnumVARIANT_iface);
506 }
507 
509 {
511  return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
512 }
513 
515 {
517  return IAccessible_AddRef(&This->IAccessible_iface);
518 }
519 
521 {
523  return IAccessible_Release(&This->IAccessible_iface);
524 }
525 
527  ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
528 {
530  HWND cur = This->enum_pos, next;
531  ULONG fetched = 0;
532  HRESULT hr;
533 
534  TRACE("(%p)->(%u %p %p)\n", This, celt, rgVar, pCeltFetched);
535 
536  if(!celt) {
537  if(pCeltFetched)
538  *pCeltFetched = 0;
539  return S_OK;
540  }
541 
542  if(!This->enum_pos)
543  next = GetWindow(This->hwnd, GW_CHILD);
544  else
545  next = GetWindow(This->enum_pos, GW_HWNDNEXT);
546 
547  while(next) {
548  cur = next;
549 
550  V_VT(rgVar+fetched) = VT_DISPATCH;
552  &IID_IDispatch, (void**)&V_DISPATCH(rgVar+fetched));
553  if(FAILED(hr)) {
554  V_VT(rgVar+fetched) = VT_EMPTY;
555  while(fetched > 0) {
556  VariantClear(rgVar+fetched-1);
557  fetched--;
558  }
559  if(pCeltFetched)
560  *pCeltFetched = 0;
561  return hr;
562  }
563  fetched++;
564  if(fetched == celt)
565  break;
566 
567  next = GetWindow(cur, GW_HWNDNEXT);
568  }
569 
570  This->enum_pos = cur;
571  if(pCeltFetched)
572  *pCeltFetched = fetched;
573  return celt == fetched ? S_OK : S_FALSE;
574 }
575 
577 {
579  HWND next;
580 
581  TRACE("(%p)->(%u)\n", This, celt);
582 
583  while(celt) {
584  if(!This->enum_pos)
585  next = GetWindow(This->hwnd, GW_CHILD);
586  else
587  next = GetWindow(This->enum_pos, GW_HWNDNEXT);
588  if(!next)
589  return S_FALSE;
590 
591  This->enum_pos = next;
592  celt--;
593  }
594 
595  return S_OK;
596 }
597 
599 {
601 
602  TRACE("(%p)\n", This);
603 
604  This->enum_pos = 0;
605  return S_OK;
606 }
607 
609 {
611  FIXME("(%p)->(%p)\n", This, ppEnum);
612  return E_NOTIMPL;
613 }
614 
615 static const IEnumVARIANTVtbl ClientEnumVARIANTVtbl = {
623 };
624 
626 {
627  Client *client;
628  HRESULT hres;
629 
630  if(!IsWindow(hwnd))
631  return E_FAIL;
632 
633  client = heap_alloc_zero(sizeof(Client));
634  if(!client)
635  return E_OUTOFMEMORY;
636 
637  client->IAccessible_iface.lpVtbl = &ClientVtbl;
638  client->IOleWindow_iface.lpVtbl = &ClientOleWindowVtbl;
639  client->IEnumVARIANT_iface.lpVtbl = &ClientEnumVARIANTVtbl;
640  client->ref = 1;
641  client->hwnd = hwnd;
642  client->enum_pos = 0;
643 
644  hres = IAccessible_QueryInterface(&client->IAccessible_iface, iid, obj);
645  IAccessible_Release(&client->IAccessible_iface);
646  return hres;
647 }
#define GW_HWNDNEXT
Definition: winuser.h:756
HWND enum_pos
Definition: client.c:36
#define WS_DISABLED
Definition: pedump.c:621
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
#define STATE_SYSTEM_UNAVAILABLE
Definition: winuser.h:2837
#define REFIID
Definition: guiddef.h:118
Definition: client.c:28
#define E_NOINTERFACE
Definition: winerror.h:2364
#define STATE_SYSTEM_FOCUSABLE
Definition: winuser.h:2857
Definition: compat.h:2046
#define GW_CHILD
Definition: winuser.h:758
LONG ref
Definition: client.c:33
static HRESULT WINAPI Client_EnumVARIANT_Clone(IEnumVARIANT *iface, IEnumVARIANT **ppEnum)
Definition: client.c:608
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
HRESULT hr
Definition: shlfolder.c:183
WINE_DEFAULT_DEBUG_CHANNEL(ieframe)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
BOOL WINAPI IsWindow(_In_opt_ HWND)
#define pt(x, y)
Definition: drawing.c:79
REFIID riid
Definition: precomp.h:44
static HRESULT WINAPI Client_get_accChildCount(IAccessible *iface, LONG *pcountChildren)
Definition: client.c:133
static HRESULT WINAPI Client_accDoDefaultAction(IAccessible *iface, VARIANT varID)
Definition: client.c:403
#define WM_GETTEXT
Definition: winuser.h:1600
#define WARN(fmt,...)
Definition: debug.h:112
static Client * impl_from_Client_OleWindow(IOleWindow *iface)
Definition: client.c:455
static HRESULT WINAPI Client_EnumVARIANT_Skip(IEnumVARIANT *iface, ULONG celt)
Definition: client.c:576
#define OBJID_WINDOW
Definition: winable.h:15
REFIID LPVOID * ppv
Definition: atlbase.h:39
static const IOleWindowVtbl ClientOleWindowVtbl
Definition: client.c:495
DWORD LCID
Definition: nls.h:13
#define STATE_SYSTEM_FOCUSED
Definition: winuser.h:2839
OLECHAR * BSTR
Definition: compat.h:2041
static LPOLESTR
Definition: stg_prop.c:27
static HRESULT WINAPI Client_GetTypeInfo(IAccessible *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: client.c:96
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT WINAPI Client_get_accState(IAccessible *iface, VARIANT varID, VARIANT *pvarState)
Definition: client.c:227
static ULONG WINAPI Client_EnumVARIANT_Release(IEnumVARIANT *iface)
Definition: client.c:520
Definition: send.c:48
static HWND child
Definition: cursoricon.c:298
& rect
Definition: startmenu.cpp:1413
static HRESULT WINAPI Client_accNavigate(IAccessible *iface, LONG navDir, VARIANT varStart, VARIANT *pvarEnd)
Definition: client.c:369
static HRESULT WINAPI Client_GetTypeInfoCount(IAccessible *iface, UINT *pctinfo)
Definition: client.c:89
#define V_I4(A)
Definition: oleauto.h:247
static HRESULT WINAPI Client_Invoke(IAccessible *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: client.c:113
HWND hwnd
Definition: client.c:35
#define V_DISPATCH(A)
Definition: oleauto.h:239
static HRESULT WINAPI Client_GetIDsOfNames(IAccessible *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: client.c:104
static HRESULT WINAPI Client_QueryInterface(IAccessible *iface, REFIID riid, void **ppv)
Definition: client.c:44
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
HRESULT create_client_object(HWND hwnd, const IID *iid, void **obj)
Definition: client.c:625
static HRESULT WINAPI Client_accHitTest(IAccessible *iface, LONG xLeft, LONG yTop, VARIANT *pvarID)
Definition: client.c:377
#define debugstr_w
Definition: kernel32.h:32
#define CWP_SKIPINVISIBLE
Definition: winuser.h:208
GLenum GLint ref
Definition: glext.h:6028
#define FIXME(fmt,...)
Definition: debug.h:111
static HRESULT WINAPI Client_get_accSelection(IAccessible *iface, VARIANT *pvarID)
Definition: client.c:311
#define CHILDID_SELF
Definition: winable.h:14
HRESULT WINAPI AccessibleObjectFromWindow(HWND hwnd, DWORD dwObjectID, REFIID riid, void **ppvObject)
Definition: main.c:349
#define S_FALSE
Definition: winerror.h:2357
#define E_INVALIDARG
Definition: ddrawi.h:101
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
static HRESULT WINAPI Client_EnumVARIANT_Reset(IEnumVARIANT *iface)
Definition: client.c:598
smooth NULL
Definition: ftsmooth.c:416
static ULONG WINAPI Client_Release(IAccessible *iface)
Definition: client.c:77
static HRESULT WINAPI Client_get_accHelp(IAccessible *iface, VARIANT varID, BSTR *pszHelp)
Definition: client.c:254
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
LONG_PTR LPARAM
Definition: windef.h:208
#define debugstr_guid
Definition: kernel32.h:35
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static HRESULT WINAPI Client_get_accParent(IAccessible *iface, IDispatch **ppdispParent)
Definition: client.c:123
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
static const IEnumVARIANTVtbl ClientEnumVARIANTVtbl
Definition: client.c:615
static HRESULT WINAPI Client_get_accName(IAccessible *iface, VARIANT varID, BSTR *pszName)
Definition: client.c:158
static HRESULT WINAPI Client_get_accRole(IAccessible *iface, VARIANT varID, VARIANT *pvarRole)
Definition: client.c:211
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:79
static ULONG WINAPI Client_EnumVARIANT_AddRef(IEnumVARIANT *iface)
Definition: client.c:514
const GUID IID_IUnknown
static HRESULT WINAPI Client_get_accChild(IAccessible *iface, VARIANT varChildID, IDispatch **ppdispChild)
Definition: client.c:147
static Client * impl_from_Client(IAccessible *iface)
Definition: client.c:39
#define WINAPI
Definition: msvc.h:6
static FILE * client
Definition: client.c:41
unsigned short WORD
Definition: ntddk_ex.h:93
static HRESULT WINAPI Client_get_accHelpTopic(IAccessible *iface, BSTR *pszHelpFile, VARIANT varID, LONG *pidTopic)
Definition: client.c:266
IOleWindow IOleWindow_iface
Definition: client.c:30
static HRESULT WINAPI Client_EnumVARIANT_QueryInterface(IEnumVARIANT *iface, REFIID riid, void **ppv)
Definition: client.c:508
HWND WINAPI ChildWindowFromPointEx(_In_ HWND, _In_ POINT, _In_ UINT)
const GUID IID_IDispatch
int convert_child_id(VARIANT *v)
Definition: main.c:100
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
static HRESULT WINAPI Client_EnumVARIANT_Next(IEnumVARIANT *iface, ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched)
Definition: client.c:526
#define InterlockedDecrement
Definition: armddk.h:52
#define V_VT(A)
Definition: oleauto.h:211
GLenum GLsizei len
Definition: glext.h:6722
static HRESULT WINAPI Client_OleWindow_ContextSensitiveHelp(IOleWindow *iface, BOOL fEnterMode)
Definition: client.c:488
static HRESULT WINAPI Client_put_accName(IAccessible *iface, VARIANT varID, BSTR pszName)
Definition: client.c:410
static HRESULT WINAPI Client_OleWindow_QueryInterface(IOleWindow *iface, REFIID riid, void **ppv)
Definition: client.c:460
static HRESULT WINAPI Client_get_accValue(IAccessible *iface, VARIANT varID, BSTR *pszValue)
Definition: client.c:186
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:534
#define GWL_STYLE
Definition: winuser.h:846
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
struct stdole::EXCEPINFO EXCEPINFO
static const char * debugstr_variant(const VARIANT *var)
Definition: container.c:46
static VARIANTARG static DISPID
Definition: ordinal.c:49
#define S_OK
Definition: intsafe.h:51
static unsigned __int64 next
Definition: rand_nt.c:6
#define InterlockedIncrement
Definition: armddk.h:53
static HRESULT WINAPI Client_OleWindow_GetWindow(IOleWindow *iface, HWND *phwnd)
Definition: client.c:478
static ULONG WINAPI Client_AddRef(IAccessible *iface)
Definition: client.c:68
#define ARRAY_SIZE(a)
Definition: main.h:24
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define E_NOTIMPL
Definition: ddrawi.h:99
static HRESULT WINAPI Client_get_accDefaultAction(IAccessible *iface, VARIANT varID, BSTR *pszDefaultAction)
Definition: client.c:318
static ULONG WINAPI Client_OleWindow_Release(IOleWindow *iface)
Definition: client.c:472
static HRESULT WINAPI Client_get_accDescription(IAccessible *iface, VARIANT varID, BSTR *pszDescription)
Definition: client.c:198
unsigned int UINT
Definition: ndis.h:50
static HRESULT WINAPI Client_accLocation(IAccessible *iface, LONG *pxLeft, LONG *pyTop, LONG *pcxWidth, LONG *pcyHeight, VARIANT varID)
Definition: client.c:338
HWND WINAPI GetFocus(void)
Definition: window.c:1909
static Client * impl_from_Client_EnumVARIANT(IEnumVARIANT *iface)
Definition: client.c:503
Definition: name.c:38
struct stdole::DISPPARAMS DISPPARAMS
const GUID IID_IOleWindow
unsigned int ULONG
Definition: retypes.h:1
BOOL WINAPI IsWindowVisible(_In_ HWND)
static HRESULT WINAPI Client_get_accKeyboardShortcut(IAccessible *iface, VARIANT varID, BSTR *pszKeyboardShortcut)
Definition: client.c:274
static const IAccessibleVtbl ClientVtbl
Definition: client.c:424
IAccessible IAccessible_iface
Definition: client.c:29
BOOL WINAPI ScreenToClient(_In_ HWND, _Inout_ LPPOINT)
static ULONG WINAPI Client_OleWindow_AddRef(IOleWindow *iface)
Definition: client.c:466
Arabic default style
Definition: afstyles.h:93
#define WS_VISIBLE
Definition: pedump.c:620
IEnumVARIANT IEnumVARIANT_iface
Definition: client.c:31
static HRESULT WINAPI Client_get_accFocus(IAccessible *iface, VARIANT *pvarID)
Definition: client.c:304
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define STATE_SYSTEM_INVISIBLE
Definition: winuser.h:2852
static HRESULT WINAPI Client_put_accValue(IAccessible *iface, VARIANT varID, BSTR pszValue)
Definition: client.c:417
static HRESULT WINAPI Client_accSelect(IAccessible *iface, LONG flagsSelect, VARIANT varID)
Definition: client.c:331
static BOOL heap_free(void *mem)
Definition: appwiz.h:75