* Sync with Wine 1.7.27.
CORE-8540
svn path=/trunk/; revision=64503
spec2def(oleacc.dll oleacc.spec ADD_IMPORTLIB)
list(APPEND SOURCE
+ client.c
main.c
- ${CMAKE_CURRENT_BINARY_DIR}/oleacc_stubs.c
- ${CMAKE_CURRENT_BINARY_DIR}/oleacc.def)
+ propservice.c
+ window.c
+ oleacc_private.h)
add_typelib(oleacc_classes.idl)
set_source_files_properties(oleacc.rc PROPERTIES OBJECT_DEPENDS "${oleacc_rc_deps}")
-add_library(oleacc SHARED ${SOURCE} oleacc.rc)
+add_library(oleacc SHARED
+ ${SOURCE}
+ oleacc.rc
+ ${CMAKE_CURRENT_BINARY_DIR}/oleacc_stubs.c
+ ${CMAKE_CURRENT_BINARY_DIR}/oleacc.def)
+
add_dependencies(oleacc stdole2)
set_module_type(oleacc win32dll)
-target_link_libraries(oleacc wine)
-add_importlibs(oleacc user32 msvcrt kernel32 ntdll)
+target_link_libraries(oleacc uuid wine)
+add_importlibs(oleacc oleaut32 ole32 user32 msvcrt kernel32 ntdll)
+add_pch(oleacc oleacc_private.h SOURCE)
add_cd_file(TARGET oleacc DESTINATION reactos/system32 FOR all)
--- /dev/null
+/*
+ * Copyright 2014 Piotr Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "oleacc_private.h"
+
+typedef struct {
+ IAccessible IAccessible_iface;
+ IOleWindow IOleWindow_iface;
+
+ LONG ref;
+
+ HWND hwnd;
+} Client;
+
+static inline Client* impl_from_Client(IAccessible *iface)
+{
+ return CONTAINING_RECORD(iface, Client, IAccessible_iface);
+}
+
+static HRESULT WINAPI Client_QueryInterface(IAccessible *iface, REFIID riid, void **ppv)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+
+ if(IsEqualIID(riid, &IID_IAccessible) ||
+ IsEqualIID(riid, &IID_IDispatch) ||
+ IsEqualIID(riid, &IID_IUnknown)) {
+ *ppv = iface;
+ }else if(IsEqualIID(riid, &IID_IOleWindow)) {
+ *ppv = &This->IOleWindow_iface;
+ }else {
+ WARN("no interface: %s\n", debugstr_guid(riid));
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IAccessible_AddRef(iface);
+ return S_OK;
+}
+
+static ULONG WINAPI Client_AddRef(IAccessible *iface)
+{
+ Client *This = impl_from_Client(iface);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref = %u\n", This, ref);
+ return ref;
+}
+
+static ULONG WINAPI Client_Release(IAccessible *iface)
+{
+ Client *This = impl_from_Client(iface);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref = %u\n", This, ref);
+
+ if(!ref)
+ heap_free(This);
+ return ref;
+}
+
+static HRESULT WINAPI Client_GetTypeInfoCount(IAccessible *iface, UINT *pctinfo)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_GetTypeInfo(IAccessible *iface,
+ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%u %x %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_GetIDsOfNames(IAccessible *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%s %p %u %x %p)\n", This, debugstr_guid(riid),
+ rgszNames, cNames, lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_Invoke(IAccessible *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%x %s %x %x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_get_accParent(IAccessible *iface, IDispatch **ppdispParent)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%p)\n", This, ppdispParent);
+
+ return AccessibleObjectFromWindow(This->hwnd, OBJID_WINDOW,
+ &IID_IDispatch, (void**)ppdispParent);
+}
+
+static HRESULT WINAPI Client_get_accChildCount(IAccessible *iface, LONG *pcountChildren)
+{
+ Client *This = impl_from_Client(iface);
+ HWND cur;
+
+ TRACE("(%p)->(%p)\n", This, pcountChildren);
+
+ *pcountChildren = 0;
+ for(cur = GetWindow(This->hwnd, GW_CHILD); cur; cur = GetWindow(cur, GW_HWNDNEXT))
+ (*pcountChildren)++;
+
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_get_accChild(IAccessible *iface,
+ VARIANT varChildID, IDispatch **ppdispChild)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varChildID), ppdispChild);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_get_accName(IAccessible *iface, VARIANT varID, BSTR *pszName)
+{
+ Client *This = impl_from_Client(iface);
+ WCHAR name[1024];
+ UINT i, len;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszName);
+
+ *pszName = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF || !IsWindow(This->hwnd))
+ return E_INVALIDARG;
+
+ len = SendMessageW(This->hwnd, WM_GETTEXT, sizeof(name)/sizeof(WCHAR), (LPARAM)name);
+ if(!len)
+ return S_FALSE;
+
+ for(i=0; i<len; i++) {
+ if(name[i] == '&') {
+ len--;
+ memmove(name+i, name+i+1, (len-i)*sizeof(WCHAR));
+ break;
+ }
+ }
+
+ *pszName = SysAllocStringLen(name, len);
+ return *pszName ? S_OK : E_OUTOFMEMORY;
+}
+
+static HRESULT WINAPI Client_get_accValue(IAccessible *iface, VARIANT varID, BSTR *pszValue)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszValue);
+
+ *pszValue = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+ return S_FALSE;
+}
+
+static HRESULT WINAPI Client_get_accDescription(IAccessible *iface,
+ VARIANT varID, BSTR *pszDescription)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDescription);
+
+ *pszDescription = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+ return S_FALSE;
+}
+
+static HRESULT WINAPI Client_get_accRole(IAccessible *iface, VARIANT varID, VARIANT *pvarRole)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarRole);
+
+ if(convert_child_id(&varID) != CHILDID_SELF) {
+ V_VT(pvarRole) = VT_EMPTY;
+ return E_INVALIDARG;
+ }
+
+ V_VT(pvarRole) = VT_I4;
+ V_I4(pvarRole) = ROLE_SYSTEM_CLIENT;
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_get_accState(IAccessible *iface, VARIANT varID, VARIANT *pvarState)
+{
+ Client *This = impl_from_Client(iface);
+ LONG style;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarState);
+
+ if(convert_child_id(&varID) != CHILDID_SELF) {
+ V_VT(pvarState) = VT_EMPTY;
+ return E_INVALIDARG;
+ }
+
+ V_VT(pvarState) = VT_I4;
+ V_I4(pvarState) = 0;
+
+ style = GetWindowLongW(This->hwnd, GWL_STYLE);
+ if(style & WS_DISABLED)
+ V_I4(pvarState) |= STATE_SYSTEM_UNAVAILABLE;
+ else if(IsWindow(This->hwnd))
+ V_I4(pvarState) |= STATE_SYSTEM_FOCUSABLE;
+ if(GetFocus() == This->hwnd)
+ V_I4(pvarState) |= STATE_SYSTEM_FOCUSED;
+ if(!(style & WS_VISIBLE))
+ V_I4(pvarState) |= STATE_SYSTEM_INVISIBLE;
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_get_accHelp(IAccessible *iface, VARIANT varID, BSTR *pszHelp)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszHelp);
+
+ *pszHelp = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+ return S_FALSE;
+}
+
+static HRESULT WINAPI Client_get_accHelpTopic(IAccessible *iface,
+ BSTR *pszHelpFile, VARIANT varID, LONG *pidTopic)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%p %s %p)\n", This, pszHelpFile, debugstr_variant(&varID), pidTopic);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_get_accKeyboardShortcut(IAccessible *iface,
+ VARIANT varID, BSTR *pszKeyboardShortcut)
+{
+ static const WCHAR shortcut_fmt[] = {'A','l','t','+','!',0};
+ Client *This = impl_from_Client(iface);
+ WCHAR name[1024];
+ UINT i, len;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszKeyboardShortcut);
+
+ *pszKeyboardShortcut = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+
+ len = SendMessageW(This->hwnd, WM_GETTEXT, sizeof(name)/sizeof(WCHAR), (LPARAM)name);
+ for(i=0; i<len; i++) {
+ if(name[i] == '&')
+ break;
+ }
+ if(i+1 >= len)
+ return S_FALSE;
+
+ *pszKeyboardShortcut = SysAllocString(shortcut_fmt);
+ if(!*pszKeyboardShortcut)
+ return E_OUTOFMEMORY;
+
+ (*pszKeyboardShortcut)[4] = name[i+1];
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_get_accFocus(IAccessible *iface, VARIANT *pvarID)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%p)\n", This, pvarID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_get_accSelection(IAccessible *iface, VARIANT *pvarID)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%p)\n", This, pvarID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_get_accDefaultAction(IAccessible *iface,
+ VARIANT varID, BSTR *pszDefaultAction)
+{
+ Client *This = impl_from_Client(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDefaultAction);
+
+ *pszDefaultAction = NULL;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+ return S_FALSE;
+}
+
+static HRESULT WINAPI Client_accSelect(IAccessible *iface, LONG flagsSelect, VARIANT varID)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%x %s)\n", This, flagsSelect, debugstr_variant(&varID));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_accLocation(IAccessible *iface, LONG *pxLeft,
+ LONG *pyTop, LONG *pcxWidth, LONG *pcyHeight, VARIANT varID)
+{
+ Client *This = impl_from_Client(iface);
+ RECT rect;
+ POINT pt;
+
+ TRACE("(%p)->(%p %p %p %p %s)\n", This, pxLeft, pyTop,
+ pcxWidth, pcyHeight, debugstr_variant(&varID));
+
+ *pxLeft = *pyTop = *pcxWidth = *pcyHeight = 0;
+ if(convert_child_id(&varID) != CHILDID_SELF)
+ return E_INVALIDARG;
+
+ if(!GetClientRect(This->hwnd, &rect))
+ return S_OK;
+
+ pt.x = rect.left,
+ pt.y = rect.top;
+ MapWindowPoints(This->hwnd, NULL, &pt, 1);
+ *pxLeft = pt.x;
+ *pyTop = pt.y;
+
+ pt.x = rect.right;
+ pt.y = rect.bottom;
+ MapWindowPoints(This->hwnd, NULL, &pt, 1);
+ *pcxWidth = pt.x - *pxLeft;
+ *pcyHeight = pt.y - *pyTop;
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_accNavigate(IAccessible *iface,
+ LONG navDir, VARIANT varStart, VARIANT *pvarEnd)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%d %s %p)\n", This, navDir, debugstr_variant(&varStart), pvarEnd);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_accHitTest(IAccessible *iface,
+ LONG xLeft, LONG yTop, VARIANT *pvarID)
+{
+ Client *This = impl_from_Client(iface);
+ HWND child;
+ POINT pt;
+
+ TRACE("(%p)->(%d %d %p)\n", This, xLeft, yTop, pvarID);
+
+ V_VT(pvarID) = VT_I4;
+ V_I4(pvarID) = 0;
+
+ pt.x = xLeft;
+ pt.y = yTop;
+ if(!IsWindowVisible(This->hwnd) || !ScreenToClient(This->hwnd, &pt))
+ return S_OK;
+
+ child = ChildWindowFromPointEx(This->hwnd, pt, CWP_SKIPINVISIBLE);
+ if(!child || child==This->hwnd)
+ return S_OK;
+
+ V_VT(pvarID) = VT_DISPATCH;
+ return AccessibleObjectFromWindow(child, OBJID_WINDOW,
+ &IID_IDispatch, (void**)&V_DISPATCH(pvarID));
+}
+
+static HRESULT WINAPI Client_accDoDefaultAction(IAccessible *iface, VARIANT varID)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_variant(&varID));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_put_accName(IAccessible *iface, VARIANT varID, BSTR pszName)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszName));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Client_put_accValue(IAccessible *iface, VARIANT varID, BSTR pszValue)
+{
+ Client *This = impl_from_Client(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszValue));
+ return E_NOTIMPL;
+}
+
+static const IAccessibleVtbl ClientVtbl = {
+ Client_QueryInterface,
+ Client_AddRef,
+ Client_Release,
+ Client_GetTypeInfoCount,
+ Client_GetTypeInfo,
+ Client_GetIDsOfNames,
+ Client_Invoke,
+ Client_get_accParent,
+ Client_get_accChildCount,
+ Client_get_accChild,
+ Client_get_accName,
+ Client_get_accValue,
+ Client_get_accDescription,
+ Client_get_accRole,
+ Client_get_accState,
+ Client_get_accHelp,
+ Client_get_accHelpTopic,
+ Client_get_accKeyboardShortcut,
+ Client_get_accFocus,
+ Client_get_accSelection,
+ Client_get_accDefaultAction,
+ Client_accSelect,
+ Client_accLocation,
+ Client_accNavigate,
+ Client_accHitTest,
+ Client_accDoDefaultAction,
+ Client_put_accName,
+ Client_put_accValue
+};
+
+static inline Client* impl_from_Client_OleWindow(IOleWindow *iface)
+{
+ return CONTAINING_RECORD(iface, Client, IOleWindow_iface);
+}
+
+static HRESULT WINAPI Client_OleWindow_QueryInterface(IOleWindow *iface, REFIID riid, void **ppv)
+{
+ Client *This = impl_from_Client_OleWindow(iface);
+ return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
+}
+
+static ULONG WINAPI Client_OleWindow_AddRef(IOleWindow *iface)
+{
+ Client *This = impl_from_Client_OleWindow(iface);
+ return IAccessible_AddRef(&This->IAccessible_iface);
+}
+
+static ULONG WINAPI Client_OleWindow_Release(IOleWindow *iface)
+{
+ Client *This = impl_from_Client_OleWindow(iface);
+ return IAccessible_Release(&This->IAccessible_iface);
+}
+
+static HRESULT WINAPI Client_OleWindow_GetWindow(IOleWindow *iface, HWND *phwnd)
+{
+ Client *This = impl_from_Client_OleWindow(iface);
+
+ TRACE("(%p)->(%p)\n", This, phwnd);
+
+ *phwnd = This->hwnd;
+ return S_OK;
+}
+
+static HRESULT WINAPI Client_OleWindow_ContextSensitiveHelp(IOleWindow *iface, BOOL fEnterMode)
+{
+ Client *This = impl_from_Client_OleWindow(iface);
+ FIXME("(%p)->(%x)\n", This, fEnterMode);
+ return E_NOTIMPL;
+}
+
+static const IOleWindowVtbl ClientOleWindowVtbl = {
+ Client_OleWindow_QueryInterface,
+ Client_OleWindow_AddRef,
+ Client_OleWindow_Release,
+ Client_OleWindow_GetWindow,
+ Client_OleWindow_ContextSensitiveHelp
+};
+
+HRESULT create_client_object(HWND hwnd, const IID *iid, void **obj)
+{
+ Client *client;
+ HRESULT hres;
+
+ if(!IsWindow(hwnd))
+ return E_FAIL;
+
+ client = heap_alloc_zero(sizeof(Client));
+ if(!client)
+ return E_OUTOFMEMORY;
+
+ client->IAccessible_iface.lpVtbl = &ClientVtbl;
+ client->IOleWindow_iface.lpVtbl = &ClientOleWindowVtbl;
+ client->ref = 1;
+ client->hwnd = hwnd;
+
+ hres = IAccessible_QueryInterface(&client->IAccessible_iface, iid, obj);
+ IAccessible_Release(&client->IAccessible_iface);
+ return hres;
+}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
#pragma code_page(65001)
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
ROLE_SYSTEM_SPLITBUTTON "Trenn-Schaltfläche"
ROLE_SYSTEM_IPADDRESS "IP-Adresse"
ROLE_SYSTEM_OUTLINEBUTTON "Gliederungsschaltfläche" /* outline kann aber auch umrahmen heißen... */
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "split button"
ROLE_SYSTEM_IPADDRESS "IP address"
ROLE_SYSTEM_OUTLINEBUTTON "outline button"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "bouton avec menu"
ROLE_SYSTEM_IPADDRESS "adresse IP"
ROLE_SYSTEM_OUTLINEBUTTON "bouton de résumé"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "split button"
ROLE_SYSTEM_IPADDRESS "כתובת IP"
ROLE_SYSTEM_OUTLINEBUTTON "outline button"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "felosztott gomb"
ROLE_SYSTEM_IPADDRESS "IP cím"
ROLE_SYSTEM_OUTLINEBUTTON "körvonalazott gomb"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "pulsante di menù combinato"
ROLE_SYSTEM_IPADDRESS "indirizzo IP"
ROLE_SYSTEM_OUTLINEBUTTON "pulsante dello schema"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "³ª´©±â ´ÜÃß"
ROLE_SYSTEM_IPADDRESS "IP ÁÖ¼Ò"
ROLE_SYSTEM_OUTLINEBUTTON "¿Ü°û¼± ´ÜÃß"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "išskleidimo mygtukas"
ROLE_SYSTEM_IPADDRESS "IP adresas"
ROLE_SYSTEM_OUTLINEBUTTON "plano mygtukas"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "splitsknop"
ROLE_SYSTEM_IPADDRESS "IP-adres"
ROLE_SYSTEM_OUTLINEBUTTON "omtrekknop"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "oppdelt knapp"
ROLE_SYSTEM_IPADDRESS "IP-adresse"
ROLE_SYSTEM_OUTLINEBUTTON "utheving for knapp"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "przycisk rozdzielania"
ROLE_SYSTEM_IPADDRESS "adres IP"
ROLE_SYSTEM_OUTLINEBUTTON "przycisk zarysu"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
#pragma code_page(65001)
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
ROLE_SYSTEM_SPLITBUTTON "split button"
ROLE_SYSTEM_IPADDRESS "endereço IP"
ROLE_SYSTEM_OUTLINEBUTTON "outline button"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
ROLE_SYSTEM_SPLITBUTTON "split button"
ROLE_SYSTEM_IPADDRESS "endereço IP"
ROLE_SYSTEM_OUTLINEBUTTON "outline button"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
#pragma code_page(65001)
STRINGTABLE
{
- 0 "obiect necunoscut" /* undocumented */
- ROLE_SYSTEM_TITLEBAR "bară de titlu"
- ROLE_SYSTEM_MENUBAR "bară de meniu"
- ROLE_SYSTEM_SCROLLBAR "bară de defilare"
- ROLE_SYSTEM_GRIP "ghidaj"
- ROLE_SYSTEM_SOUND "sunet"
- ROLE_SYSTEM_CURSOR "cursor"
- ROLE_SYSTEM_CARET "circumflex"
- ROLE_SYSTEM_ALERT "atenționare"
- ROLE_SYSTEM_WINDOW "fereastră"
- ROLE_SYSTEM_CLIENT "client"
- ROLE_SYSTEM_MENUPOPUP "meniu contextual"
- ROLE_SYSTEM_MENUITEM "element de meniu"
- ROLE_SYSTEM_TOOLTIP "indiciu"
- ROLE_SYSTEM_APPLICATION "aplicație"
- ROLE_SYSTEM_DOCUMENT "document"
- ROLE_SYSTEM_PANE "panou"
- ROLE_SYSTEM_CHART "diagramă"
- ROLE_SYSTEM_DIALOG "dialog"
- ROLE_SYSTEM_BORDER "margine"
- ROLE_SYSTEM_GROUPING "grupare"
- ROLE_SYSTEM_SEPARATOR "separator"
- ROLE_SYSTEM_TOOLBAR "panou de instrumente"
- ROLE_SYSTEM_STATUSBAR "bară de stare"
- ROLE_SYSTEM_TABLE "tabel"
- ROLE_SYSTEM_COLUMNHEADER "antet de coloană"
- ROLE_SYSTEM_ROWHEADER "antet de rând"
- ROLE_SYSTEM_COLUMN "coloană"
- ROLE_SYSTEM_ROW "rând"
- ROLE_SYSTEM_CELL "celulă"
- ROLE_SYSTEM_LINK "adresă"
- ROLE_SYSTEM_HELPBALLOON "balon de ajutor"
- ROLE_SYSTEM_CHARACTER "caracter"
- ROLE_SYSTEM_LIST "listă"
- ROLE_SYSTEM_LISTITEM "element din listă"
- ROLE_SYSTEM_OUTLINE "contur"
- ROLE_SYSTEM_OUTLINEITEM "conturare element"
- ROLE_SYSTEM_PAGETAB "compartiment"
- ROLE_SYSTEM_PROPERTYPAGE "pagină de proprietăți"
- ROLE_SYSTEM_INDICATOR "indicator"
- ROLE_SYSTEM_GRAPHIC "grafică"
- ROLE_SYSTEM_STATICTEXT "text static"
- ROLE_SYSTEM_TEXT "text"
- ROLE_SYSTEM_PUSHBUTTON "buton de comandă"
- ROLE_SYSTEM_CHECKBUTTON "buton de bifare"
- ROLE_SYSTEM_RADIOBUTTON "buton radio"
- ROLE_SYSTEM_COMBOBOX "listă derulantă"
- ROLE_SYSTEM_DROPLIST "listă verticală"
- ROLE_SYSTEM_PROGRESSBAR "bară de progres"
- ROLE_SYSTEM_DIAL "apelator"
- ROLE_SYSTEM_HOTKEYFIELD "câmp de tastă rapidă"
- ROLE_SYSTEM_SLIDER "glisor"
- ROLE_SYSTEM_SPINBUTTON "căsuță incrementală"
- ROLE_SYSTEM_DIAGRAM "diagramă"
- ROLE_SYSTEM_ANIMATION "animație"
- ROLE_SYSTEM_EQUATION "ecuație"
- ROLE_SYSTEM_BUTTONDROPDOWN "buton listă verticală"
- ROLE_SYSTEM_BUTTONMENU "buton meniu"
+ 0 "obiect necunoscut" /* undocumented */
+ ROLE_SYSTEM_TITLEBAR "bară de titlu"
+ ROLE_SYSTEM_MENUBAR "bară de meniu"
+ ROLE_SYSTEM_SCROLLBAR "bară de defilare"
+ ROLE_SYSTEM_GRIP "ghidaj"
+ ROLE_SYSTEM_SOUND "sunet"
+ ROLE_SYSTEM_CURSOR "cursor"
+ ROLE_SYSTEM_CARET "circumflex"
+ ROLE_SYSTEM_ALERT "atenționare"
+ ROLE_SYSTEM_WINDOW "fereastră"
+ ROLE_SYSTEM_CLIENT "client"
+ ROLE_SYSTEM_MENUPOPUP "meniu contextual"
+ ROLE_SYSTEM_MENUITEM "element de meniu"
+ ROLE_SYSTEM_TOOLTIP "indiciu"
+ ROLE_SYSTEM_APPLICATION "aplicație"
+ ROLE_SYSTEM_DOCUMENT "document"
+ ROLE_SYSTEM_PANE "panou"
+ ROLE_SYSTEM_CHART "diagramă"
+ ROLE_SYSTEM_DIALOG "dialog"
+ ROLE_SYSTEM_BORDER "margine"
+ ROLE_SYSTEM_GROUPING "grupare"
+ ROLE_SYSTEM_SEPARATOR "separator"
+ ROLE_SYSTEM_TOOLBAR "panou de instrumente"
+ ROLE_SYSTEM_STATUSBAR "bară de stare"
+ ROLE_SYSTEM_TABLE "tabel"
+ ROLE_SYSTEM_COLUMNHEADER "antet de coloană"
+ ROLE_SYSTEM_ROWHEADER "antet de rând"
+ ROLE_SYSTEM_COLUMN "coloană"
+ ROLE_SYSTEM_ROW "rând"
+ ROLE_SYSTEM_CELL "celulă"
+ ROLE_SYSTEM_LINK "adresă"
+ ROLE_SYSTEM_HELPBALLOON "balon de ajutor"
+ ROLE_SYSTEM_CHARACTER "caracter"
+ ROLE_SYSTEM_LIST "listă"
+ ROLE_SYSTEM_LISTITEM "element din listă"
+ ROLE_SYSTEM_OUTLINE "contur"
+ ROLE_SYSTEM_OUTLINEITEM "conturare element"
+ ROLE_SYSTEM_PAGETAB "compartiment"
+ ROLE_SYSTEM_PROPERTYPAGE "pagină de proprietăți"
+ ROLE_SYSTEM_INDICATOR "indicator"
+ ROLE_SYSTEM_GRAPHIC "grafică"
+ ROLE_SYSTEM_STATICTEXT "text static"
+ ROLE_SYSTEM_TEXT "text"
+ ROLE_SYSTEM_PUSHBUTTON "buton de comandă"
+ ROLE_SYSTEM_CHECKBUTTON "buton de bifare"
+ ROLE_SYSTEM_RADIOBUTTON "buton radio"
+ ROLE_SYSTEM_COMBOBOX "listă derulantă"
+ ROLE_SYSTEM_DROPLIST "listă verticală"
+ ROLE_SYSTEM_PROGRESSBAR "bară de progres"
+ ROLE_SYSTEM_DIAL "apelator"
+ ROLE_SYSTEM_HOTKEYFIELD "câmp de tastă rapidă"
+ ROLE_SYSTEM_SLIDER "glisor"
+ ROLE_SYSTEM_SPINBUTTON "căsuță incrementală"
+ ROLE_SYSTEM_DIAGRAM "diagramă"
+ ROLE_SYSTEM_ANIMATION "animație"
+ ROLE_SYSTEM_EQUATION "ecuație"
+ ROLE_SYSTEM_BUTTONDROPDOWN "buton listă verticală"
+ ROLE_SYSTEM_BUTTONMENU "buton meniu"
ROLE_SYSTEM_BUTTONDROPDOWNGRID "buton listă verticală de grilă"
- ROLE_SYSTEM_WHITESPACE "spațiu gol"
- ROLE_SYSTEM_PAGETABLIST "listă de file"
- ROLE_SYSTEM_CLOCK "ceas"
- ROLE_SYSTEM_SPLITBUTTON "buton separare"
- ROLE_SYSTEM_IPADDRESS "adresă IP"
- ROLE_SYSTEM_OUTLINEBUTTON "buton contur"
+ ROLE_SYSTEM_WHITESPACE "spațiu gol"
+ ROLE_SYSTEM_PAGETABLIST "listă de file"
+ ROLE_SYSTEM_CLOCK "ceas"
+ ROLE_SYSTEM_SPLITBUTTON "buton separare"
+ ROLE_SYSTEM_IPADDRESS "adresă IP"
+ ROLE_SYSTEM_OUTLINEBUTTON "buton contur"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "кнопка разделения"
ROLE_SYSTEM_IPADDRESS "IP-адрес"
ROLE_SYSTEM_OUTLINEBUTTON "кнопка контура"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
#pragma code_page(65001)
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
ROLE_SYSTEM_SPLITBUTTON "deljeni gumb"
ROLE_SYSTEM_IPADDRESS "IP naslov"
ROLE_SYSTEM_OUTLINEBUTTON "gumb orisa"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "buton ndarës"
ROLE_SYSTEM_IPADDRESS "adresa IP"
ROLE_SYSTEM_OUTLINEBUTTON "buton plani"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
ROLE_SYSTEM_SPLITBUTTON "ayırma düğmesi"
ROLE_SYSTEM_IPADDRESS "IP adresi"
ROLE_SYSTEM_OUTLINEBUTTON "anaçizgi düğmesi"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "oleacc.h"
-
/* UTF-8 */
#pragma code_page(65001)
ROLE_SYSTEM_SPLITBUTTON "кнопка поділу"
ROLE_SYSTEM_IPADDRESS "IP адреса"
ROLE_SYSTEM_OUTLINEBUTTON "кпопка плану"
+
+ IDS_STATE_NORMAL "normal"
+ IDS_STATE_UNAVAILABLE "unavailable"
+ IDS_STATE_SELECTED "selected"
+ IDS_STATE_FOCUSED "focused"
+ IDS_STATE_PRESSED "pressed"
+ IDS_STATE_CHECKED "checked"
+ IDS_STATE_MIXED "mixed"
+ IDS_STATE_READONLY "read only"
+ IDS_STATE_HOTTRACKED "hot tracked"
+ IDS_STATE_DEFAULT "default"
+ IDS_STATE_EXPANDED "expanded"
+ IDS_STATE_COLLAPSED "collapsed"
+ IDS_STATE_BUSY "busy"
+ IDS_STATE_FLOATING "floating"
+ IDS_STATE_MARQUEED "marqueed"
+ IDS_STATE_ANIMATED "animated"
+ IDS_STATE_INVISIBLE "invisible"
+ IDS_STATE_OFFSCREEN "offscreen"
+ IDS_STATE_SIZEABLE "sizeable"
+ IDS_STATE_MOVEABLE "moveable"
+ IDS_STATE_SELFVOICING "self voicing"
+ IDS_STATE_FOCUSABLE "focusable"
+ IDS_STATE_SELECTABLE "selectable"
+ IDS_STATE_LINKED "linked"
+ IDS_STATE_TRAVERSED "traversed"
+ IDS_STATE_MULTISELECTABLE "multi selectable"
+ IDS_STATE_EXTSELECTABLE "extended selectable"
+ IDS_STATE_ALERT_LOW "alert low"
+ IDS_STATE_ALERT_MEDIUM "alert medium"
+ IDS_STATE_ALERT_HIGH "alert high"
+ IDS_STATE_PROTECTED "protected"
+ IDS_STATE_HASPOPUP "has popup"
}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#define WIN32_NO_STATUS
-#define _INC_WINDOWS
-#define COM_NO_WINDOWS_H
+#include "oleacc_private.h"
-#include <stdarg.h>
-#include <windef.h>
-#include <winbase.h>
-//#include "winuser.h"
-#include <ole2.h>
-#include <oleacc.h>
+#include <commctrl.h>
+#include <rpcproxy.h>
#include <wine/unicode.h>
-#include <wine/debug.h>
-WINE_DEFAULT_DEBUG_CHANNEL(oleacc);
+#include "resource.h"
+
+static const WCHAR lresult_atom_prefix[] = {'w','i','n','e','_','o','l','e','a','c','c',':'};
+
+static const WCHAR menuW[] = {'#','3','2','7','6','8',0};
+static const WCHAR desktopW[] = {'#','3','2','7','6','9',0};
+static const WCHAR dialogW[] = {'#','3','2','7','7','0',0};
+static const WCHAR winswitchW[] = {'#','3','2','7','7','1',0};
+static const WCHAR mdi_clientW[] = {'M','D','I','C','l','i','e','n','t',0};
+static const WCHAR richeditW[] = {'R','I','C','H','E','D','I','T',0};
+static const WCHAR richedit20aW[] = {'R','i','c','h','E','d','i','t','2','0','A',0};
+static const WCHAR richedit20wW[] = {'R','i','c','h','E','d','i','t','2','0','W',0};
+
+typedef HRESULT (WINAPI *accessible_create)(HWND, const IID*, void**);
+
+static struct {
+ const WCHAR *name;
+ DWORD idx;
+ accessible_create create_client;
+ accessible_create create_window;
+} builtin_classes[] = {
+ {WC_LISTBOXW, 0x10000, NULL, NULL},
+ {menuW, 0x10001, NULL, NULL},
+ {WC_BUTTONW, 0x10002, NULL, NULL},
+ {WC_STATICW, 0x10003, NULL, NULL},
+ {WC_EDITW, 0x10004, NULL, NULL},
+ {WC_COMBOBOXW, 0x10005, NULL, NULL},
+ {dialogW, 0x10006, NULL, NULL},
+ {winswitchW, 0x10007, NULL, NULL},
+ {mdi_clientW, 0x10008, NULL, NULL},
+ {desktopW, 0x10009, NULL, NULL},
+ {WC_SCROLLBARW, 0x1000a, NULL, NULL},
+ {STATUSCLASSNAMEW, 0x1000b, NULL, NULL},
+ {TOOLBARCLASSNAMEW, 0x1000c, NULL, NULL},
+ {PROGRESS_CLASSW, 0x1000d, NULL, NULL},
+ {ANIMATE_CLASSW, 0x1000e, NULL, NULL},
+ {WC_TABCONTROLW, 0x1000f, NULL, NULL},
+ {HOTKEY_CLASSW, 0x10010, NULL, NULL},
+ {WC_HEADERW, 0x10011, NULL, NULL},
+ {TRACKBAR_CLASSW, 0x10012, NULL, NULL},
+ {WC_LISTVIEWW, 0x10013, NULL, NULL},
+ {UPDOWN_CLASSW, 0x10016, NULL, NULL},
+ {TOOLTIPS_CLASSW, 0x10018, NULL, NULL},
+ {WC_TREEVIEWW, 0x10019, NULL, NULL},
+ {MONTHCAL_CLASSW, 0, NULL, NULL},
+ {DATETIMEPICK_CLASSW, 0, NULL, NULL},
+ {WC_IPADDRESSW, 0, NULL, NULL},
+ {richeditW, 0x1001c, NULL, NULL},
+ {richedit20aW, 0, NULL, NULL},
+ {richedit20wW, 0, NULL, NULL},
+};
static HINSTANCE oleacc_handle = 0;
+int convert_child_id(VARIANT *v)
+{
+ switch(V_VT(v)) {
+ case VT_I4:
+ return V_I4(v);
+ default:
+ FIXME("unhandled child ID variant type: %d\n", V_VT(v));
+ return -1;
+ }
+}
+
+static accessible_create get_builtin_accessible_obj(HWND hwnd, LONG objid)
+{
+ WCHAR class_name[64];
+ int i, idx;
+
+ if(!RealGetWindowClassW(hwnd, class_name, sizeof(class_name)/sizeof(WCHAR)))
+ return NULL;
+ TRACE("got window class: %s\n", debugstr_w(class_name));
+
+ for(i=0; i<sizeof(builtin_classes)/sizeof(builtin_classes[0]); i++) {
+ if(!strcmpiW(class_name, builtin_classes[i].name)) {
+ accessible_create ret;
+
+ ret = (objid==OBJID_CLIENT ?
+ builtin_classes[i].create_client :
+ builtin_classes[i].create_window);
+ if(!ret)
+ FIXME("unhandled window class: %s\n", debugstr_w(class_name));
+ return ret;
+ }
+ }
+
+ idx = SendMessageW(hwnd, WM_GETOBJECT, 0, OBJID_QUERYCLASSNAMEIDX);
+ if(idx) {
+ for(i=0; i<sizeof(builtin_classes)/sizeof(builtin_classes[0]); i++) {
+ if(idx == builtin_classes[i].idx) {
+ accessible_create ret;
+
+ ret = (objid==OBJID_CLIENT ?
+ builtin_classes[i].create_client :
+ builtin_classes[i].create_window);
+ if(!ret)
+ FIXME("unhandled class name idx: %x\n", idx);
+ return ret;
+ }
+ }
+
+ WARN("unhandled class name idx: %x\n", idx);
+ }
+
+ return NULL;
+}
+
HRESULT WINAPI CreateStdAccessibleObject( HWND hwnd, LONG idObject,
- REFIID riidInterface, void** ppvObject )
+ REFIID riidInterface, void** ppvObject )
{
- FIXME("%p %d %s %p\n", hwnd, idObject,
+ accessible_create create;
+
+ TRACE("%p %d %s %p\n", hwnd, idObject,
debugstr_guid( riidInterface ), ppvObject );
- return E_NOTIMPL;
+
+ switch(idObject) {
+ case OBJID_CLIENT:
+ create = get_builtin_accessible_obj(hwnd, idObject);
+ if(create) return create(hwnd, riidInterface, ppvObject);
+ return create_client_object(hwnd, riidInterface, ppvObject);
+ case OBJID_WINDOW:
+ create = get_builtin_accessible_obj(hwnd, idObject);
+ if(create) return create(hwnd, riidInterface, ppvObject);
+ return create_window_object(hwnd, riidInterface, ppvObject);
+ default:
+ FIXME("unhandled object id: %d\n", idObject);
+ return E_NOTIMPL;
+ }
}
HRESULT WINAPI ObjectFromLresult( LRESULT result, REFIID riid, WPARAM wParam, void **ppObject )
{
- FIXME("%ld %s %ld %p\n", result, debugstr_guid(riid), wParam, ppObject );
- return E_NOTIMPL;
+ WCHAR atom_str[sizeof(lresult_atom_prefix)/sizeof(WCHAR)+3*8+3];
+ HANDLE server_proc, server_mapping, mapping;
+ DWORD proc_id, size;
+ IStream *stream;
+ HGLOBAL data;
+ void *view;
+ HRESULT hr;
+ WCHAR *p;
+
+ TRACE("%ld %s %ld %p\n", result, debugstr_guid(riid), wParam, ppObject );
+
+ if(wParam)
+ FIXME("unsupported wParam = %lx\n", wParam);
+
+ if(!ppObject)
+ return E_INVALIDARG;
+ *ppObject = NULL;
+
+ if(result != (ATOM)result)
+ return E_FAIL;
+
+ if(!GlobalGetAtomNameW(result, atom_str, sizeof(atom_str)/sizeof(WCHAR)))
+ return E_FAIL;
+ if(memcmp(atom_str, lresult_atom_prefix, sizeof(lresult_atom_prefix)))
+ return E_FAIL;
+ p = atom_str + sizeof(lresult_atom_prefix)/sizeof(WCHAR);
+ proc_id = strtoulW(p, &p, 16);
+ if(*p != ':')
+ return E_FAIL;
+ server_mapping = ULongToHandle( strtoulW(p+1, &p, 16) );
+ if(*p != ':')
+ return E_FAIL;
+ size = strtoulW(p+1, &p, 16);
+ if(*p != 0)
+ return E_FAIL;
+
+ server_proc = OpenProcess(PROCESS_DUP_HANDLE, FALSE, proc_id);
+ if(!server_proc)
+ return E_FAIL;
+
+ if(!DuplicateHandle(server_proc, server_mapping, GetCurrentProcess(), &mapping,
+ 0, FALSE, DUPLICATE_CLOSE_SOURCE|DUPLICATE_SAME_ACCESS))
+ return E_FAIL;
+ CloseHandle(server_proc);
+ GlobalDeleteAtom(result);
+
+ view = MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0);
+ CloseHandle(mapping);
+ if(!view)
+ return E_FAIL;
+
+ data = GlobalAlloc(GMEM_FIXED, size);
+ memcpy(data, view, size);
+ UnmapViewOfFile(view);
+ if(!data)
+ return E_OUTOFMEMORY;
+
+ hr = CreateStreamOnHGlobal(data, TRUE, &stream);
+ if(FAILED(hr)) {
+ GlobalFree(data);
+ return hr;
+ }
+
+ hr = CoUnmarshalInterface(stream, riid, ppObject);
+ IStream_Release(stream);
+ return hr;
}
LRESULT WINAPI LresultFromObject( REFIID riid, WPARAM wParam, LPUNKNOWN pAcc )
{
- FIXME("%s %ld %p\n", debugstr_guid(riid), wParam, pAcc );
- return E_NOTIMPL;
+ static const WCHAR atom_fmt[] = {'%','0','8','x',':','%','0','8','x',':','%','0','8','x',0};
+ static const LARGE_INTEGER seek_zero = {{0}};
+
+ WCHAR atom_str[sizeof(lresult_atom_prefix)/sizeof(WCHAR)+3*8+3];
+ IStream *stream;
+ HANDLE mapping;
+ STATSTG stat;
+ HRESULT hr;
+ ATOM atom;
+ void *view;
+
+ TRACE("%s %ld %p\n", debugstr_guid(riid), wParam, pAcc);
+
+ if(wParam)
+ FIXME("unsupported wParam = %lx\n", wParam);
+
+ if(!pAcc)
+ return E_INVALIDARG;
+
+ hr = CreateStreamOnHGlobal(NULL, TRUE, &stream);
+ if(FAILED(hr))
+ return hr;
+
+ hr = CoMarshalInterface(stream, riid, pAcc, MSHCTX_LOCAL, NULL, MSHLFLAGS_NORMAL);
+ if(FAILED(hr)) {
+ IStream_Release(stream);
+ return hr;
+ }
+
+ hr = IStream_Seek(stream, seek_zero, STREAM_SEEK_SET, NULL);
+ if(FAILED(hr)) {
+ IStream_Release(stream);
+ return hr;
+ }
+
+ hr = IStream_Stat(stream, &stat, STATFLAG_NONAME);
+ if(FAILED(hr)) {
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return hr;
+ }else if(stat.cbSize.u.HighPart) {
+ FIXME("stream size to big\n");
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return E_NOTIMPL;
+ }
+
+ mapping = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,
+ stat.cbSize.u.HighPart, stat.cbSize.u.LowPart, NULL);
+ if(!mapping) {
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return hr;
+ }
+
+ view = MapViewOfFile(mapping, FILE_MAP_WRITE, 0, 0, 0);
+ if(!view) {
+ CloseHandle(mapping);
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return E_FAIL;
+ }
+
+ hr = IStream_Read(stream, view, stat.cbSize.u.LowPart, NULL);
+ UnmapViewOfFile(view);
+ if(FAILED(hr)) {
+ CloseHandle(mapping);
+ hr = IStream_Seek(stream, seek_zero, STREAM_SEEK_SET, NULL);
+ if(SUCCEEDED(hr))
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return hr;
+
+ }
+
+ memcpy(atom_str, lresult_atom_prefix, sizeof(lresult_atom_prefix));
+ sprintfW(atom_str+sizeof(lresult_atom_prefix)/sizeof(WCHAR),
+ atom_fmt, GetCurrentProcessId(), HandleToUlong(mapping), stat.cbSize.u.LowPart);
+ atom = GlobalAddAtomW(atom_str);
+ if(!atom) {
+ CloseHandle(mapping);
+ hr = IStream_Seek(stream, seek_zero, STREAM_SEEK_SET, NULL);
+ if(SUCCEEDED(hr))
+ CoReleaseMarshalData(stream);
+ IStream_Release(stream);
+ return E_FAIL;
+ }
+
+ IStream_Release(stream);
+ return atom;
}
HRESULT WINAPI AccessibleObjectFromPoint( POINT ptScreen, IAccessible** ppacc, VARIANT* pvarChild )
HRESULT WINAPI AccessibleObjectFromWindow( HWND hwnd, DWORD dwObjectID,
REFIID riid, void** ppvObject )
{
- FIXME("%p %d %s %p\n", hwnd, dwObjectID,
+ TRACE("%p %d %s %p\n", hwnd, dwObjectID,
debugstr_guid( riid ), ppvObject );
- return E_NOTIMPL;
+
+ if(!ppvObject)
+ return E_INVALIDARG;
+ *ppvObject = NULL;
+
+ if(IsWindow(hwnd)) {
+ LRESULT lres;
+
+ lres = SendMessageW(hwnd, WM_GETOBJECT, 0xffffffff, dwObjectID);
+ if(FAILED(lres))
+ return lres;
+ else if(lres)
+ return ObjectFromLresult(lres, riid, 0, ppvObject);
+ }
+
+ return CreateStdAccessibleObject(hwnd, dwObjectID, riid, ppvObject);
+}
+
+HRESULT WINAPI WindowFromAccessibleObject(IAccessible *acc, HWND *phwnd)
+{
+ IDispatch *parent;
+ IOleWindow *ow;
+ HRESULT hres;
+
+ TRACE("%p %p\n", acc, phwnd);
+
+ IAccessible_AddRef(acc);
+ while(1) {
+ hres = IAccessible_QueryInterface(acc, &IID_IOleWindow, (void**)&ow);
+ if(SUCCEEDED(hres)) {
+ hres = IOleWindow_GetWindow(ow, phwnd);
+ IOleWindow_Release(ow);
+ IAccessible_Release(acc);
+ return hres;
+ }
+
+ hres = IAccessible_get_accParent(acc, &parent);
+ IAccessible_Release(acc);
+ if(FAILED(hres))
+ return hres;
+ if(hres!=S_OK || !parent) {
+ *phwnd = NULL;
+ return hres;
+ }
+
+ hres = IDispatch_QueryInterface(parent, &IID_IAccessible, (void**)&acc);
+ IDispatch_Release(parent);
+ if(FAILED(hres))
+ return hres;
+ }
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
return TRUE;
}
-HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
-{
- FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
- return E_NOTIMPL;
-}
-
HRESULT WINAPI DllRegisterServer(void)
{
- FIXME("\n");
- return S_OK;
+ TRACE("()\n");
+ return __wine_register_resources(oleacc_handle);
}
HRESULT WINAPI DllUnregisterServer(void)
{
- FIXME("\n");
- return S_OK;
+ TRACE("()\n");
+ return __wine_unregister_resources(oleacc_handle);
}
void WINAPI GetOleaccVersionInfo(DWORD* pVersion, DWORD* pBuild)
*pBuild = MAKELONG(0,5406);
}
+HANDLE WINAPI GetProcessHandleFromHwnd(HWND hwnd)
+{
+ DWORD proc_id;
+
+ TRACE("%p\n", hwnd);
+
+ if(!GetWindowThreadProcessId(hwnd, &proc_id))
+ return NULL;
+ return OpenProcess(PROCESS_DUP_HANDLE | PROCESS_VM_OPERATION |
+ PROCESS_VM_READ | PROCESS_VM_WRITE | SYNCHRONIZE, TRUE, proc_id);
+}
+
UINT WINAPI GetRoleTextW(DWORD role, LPWSTR lpRole, UINT rolemax)
{
INT ret;
TRACE("%u %p %u\n", role, lpRole, rolemax);
+ if(lpRole && !rolemax)
+ return 0;
+
length = GetRoleTextW(role, NULL, 0);
- if((length == 0) || (lpRole && !rolemax))
+ if(!length) {
+ if(lpRole && rolemax)
+ lpRole[0] = 0;
return 0;
+ }
roletextW = HeapAlloc(GetProcessHeap(), 0, (length + 1)*sizeof(WCHAR));
if(!roletextW)
return length - 1;
}
+ if(rolemax < length) {
+ HeapFree(GetProcessHeap(), 0, roletextW);
+ lpRole[0] = 0;
+ return 0;
+ }
+
WideCharToMultiByte( CP_ACP, 0, roletextW, -1, lpRole, rolemax, NULL, NULL );
if(rolemax < length){
return length - 1;
}
+
+UINT WINAPI GetStateTextW(DWORD state_bit, WCHAR *state_str, UINT state_str_len)
+{
+ DWORD state_id;
+
+ TRACE("%x %p %u\n", state_bit, state_str, state_str_len);
+
+ if(state_bit & ~(STATE_SYSTEM_VALID | STATE_SYSTEM_HASPOPUP)) {
+ if(state_str && state_str_len)
+ state_str[0] = 0;
+ return 0;
+ }
+
+ state_id = IDS_STATE_NORMAL;
+ while(state_bit) {
+ state_id++;
+ state_bit /= 2;
+ }
+
+ if(state_str) {
+ UINT ret = LoadStringW(oleacc_handle, state_id, state_str, state_str_len);
+ if(!ret && state_str_len)
+ state_str[0] = 0;
+ return ret;
+ }else {
+ WCHAR *tmp;
+ return LoadStringW(oleacc_handle, state_id, (WCHAR*)&tmp, 0);
+ }
+
+}
+
+UINT WINAPI GetStateTextA(DWORD state_bit, CHAR *state_str, UINT state_str_len)
+{
+ DWORD state_id;
+
+ TRACE("%x %p %u\n", state_bit, state_str, state_str_len);
+
+ if(state_str && !state_str_len)
+ return 0;
+
+ if(state_bit & ~(STATE_SYSTEM_VALID | STATE_SYSTEM_HASPOPUP)) {
+ if(state_str && state_str_len)
+ state_str[0] = 0;
+ return 0;
+ }
+
+ state_id = IDS_STATE_NORMAL;
+ while(state_bit) {
+ state_id++;
+ state_bit /= 2;
+ }
+
+ if(state_str) {
+ UINT ret = LoadStringA(oleacc_handle, state_id, state_str, state_str_len);
+ if(!ret && state_str_len)
+ state_str[0] = 0;
+ return ret;
+ }else {
+ CHAR tmp[256];
+ return LoadStringA(oleacc_handle, state_id, tmp, sizeof(tmp));
+ }
+}
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-//#include "windef.h"
-//#include "oleacc.h"
+#include <windef.h>
+#include <oleacc.h>
+
+#include "resource.h"
1 TYPELIB "oleacc_classes.tlb"
1 WINE_REGISTRY "oleacc_classes.rgs"
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+#define WINE_FILEDESCRIPTION_STR "Wine OLE Accessibility"
+#define WINE_FILENAME_STR "oleacc.dll"
+#define WINE_FILEVERSION 7,0,0,0
+#define WINE_FILEVERSION_STR "7.0.0.0"
+#define WINE_PRODUCTVERSION 6,1,7600,16385
+#define WINE_PRODUCTVERSION_STR "6.1.6700.16385"
+
+#include <wine/wine_common_ver.rc>
+
#ifdef LANGUAGE_EN_US
#include "lang/oleacc_En.rc"
#endif
@ stdcall -private DllRegisterServer()
@ stdcall -private DllUnregisterServer()
@ stdcall GetOleaccVersionInfo(ptr ptr)
+@ stdcall GetProcessHandleFromHwnd(ptr)
@ stdcall GetRoleTextA(long ptr long)
@ stdcall GetRoleTextW(long ptr long)
-@ stub GetStateTextA
-@ stub GetStateTextW
-@ stub IID_IAccessible
-@ stub IID_IAccessibleHandler
-@ stub LIBID_Accessibility
+@ stdcall GetStateTextA(long ptr long)
+@ stdcall GetStateTextW(long ptr long)
+@ extern IID_IAccessible
+@ extern IID_IAccessibleHandler
+@ extern LIBID_Accessibility
@ stdcall LresultFromObject(ptr long ptr)
@ stdcall ObjectFromLresult(long ptr long ptr)
-@ stub WindowFromAccessibleObject
+@ stdcall WindowFromAccessibleObject(ptr ptr)
--- /dev/null
+/*
+ * Copyright 2014 Piotr Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _OLEACC_PRIVATE_H_
+#define _OLEACC_PRIVATE_H_
+
+#define WIN32_NO_STATUS
+#define _INC_WINDOWS
+#define COM_NO_WINDOWS_H
+
+#define COBJMACROS
+
+#include <windef.h>
+#include <winbase.h>
+#include <ole2.h>
+#include <oleacc.h>
+
+#include <wine/debug.h>
+WINE_DEFAULT_DEBUG_CHANNEL(oleacc);
+
+HRESULT create_client_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
+HRESULT create_window_object(HWND, const IID*, void**) DECLSPEC_HIDDEN;
+
+int convert_child_id(VARIANT *v) DECLSPEC_HIDDEN;
+
+static inline void * __WINE_ALLOC_SIZE(1) heap_alloc_zero(size_t len)
+{
+ return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
+}
+
+static inline BOOL heap_free(void *mem)
+{
+ return HeapFree(GetProcessHeap(), 0, mem);
+}
+
+#endif /* _OLEACC_PRIVATE_H_ */
--- /dev/null
+/*
+ * Copyright 2014 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "oleacc_private.h"
+
+static HRESULT WINAPI AccPropServices_QueryInterface(IAccPropServices *iface, REFIID riid, void **ppv)
+{
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(IID_IUnknown %p)\n", ppv);
+ *ppv = iface;
+ }else if(IsEqualGUID(&IID_IAccPropServices, riid)) {
+ TRACE("(IID_IAccPropServices %p)\n", ppv);
+ *ppv = iface;
+ }else {
+ FIXME("Unknown iface %s\n", debugstr_guid(riid));
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+}
+
+static ULONG WINAPI AccPropServices_AddRef(IAccPropServices *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI AccPropServices_Release(IAccPropServices *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI AccPropServices_SetPropValue(IAccPropServices *iface, const BYTE *pIDString,
+ DWORD dwIDStringLen, MSAAPROPID idProp, VARIANT var)
+{
+ FIXME("(%p %u %s %s)\n", pIDString, dwIDStringLen, debugstr_guid(&idProp), debugstr_variant(&var));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetPropServer(IAccPropServices *iface, const BYTE *pIDString,
+ DWORD dwIDStringLen, const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
+{
+ FIXME("(%p %u %p %d %p %u)\n", pIDString, dwIDStringLen, paProps, cProps, pServer, AnnoScope);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_ClearProps(IAccPropServices *iface, const BYTE *pIDString,
+ DWORD dwIDStringLen, const MSAAPROPID *paProps, int cProps)
+{
+ FIXME("(%p %u %p %d)\n", pIDString, dwIDStringLen, paProps, cProps);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHwndProp(IAccPropServices *iface, HWND hwnd, DWORD idObject,
+ DWORD idChild, MSAAPROPID idProp, VARIANT var)
+{
+ FIXME("(%p %u %u %s %s)\n", hwnd, idObject, idChild, debugstr_guid(&idProp), debugstr_variant(&var));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHwndPropStr(IAccPropServices *iface, HWND hwnd, DWORD idObject,
+ DWORD idChild, MSAAPROPID idProp, LPWSTR str)
+{
+ FIXME("(%p %u %u %s %s)\n", hwnd, idObject, idChild, debugstr_guid(&idProp), debugstr_w(str));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHwndPropServer(IAccPropServices *iface, HWND hwnd, DWORD idObject,
+ DWORD idChild, const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
+{
+ FIXME("(%p %u %u %p %d %p %u)\n", hwnd, idObject, idChild, paProps, cProps, pServer, AnnoScope);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_ClearHwndProps(IAccPropServices *iface, HWND hwnd, DWORD idObject,
+ DWORD idChild, const MSAAPROPID *paProps, int cProps)
+{
+ FIXME("(%p %u %u %p %d)\n", hwnd, idObject, idChild, paProps, cProps);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_ComposeHwndIdentityString(IAccPropServices *iface, HWND hwnd,
+ DWORD idObject, DWORD idChild, BYTE **ppIDString, DWORD *pdwIDStringLen)
+{
+ FIXME("(%p %u %u %p %p)\n", hwnd, idObject, idChild, ppIDString, pdwIDStringLen);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_DecomposeHwndIdentityString(IAccPropServices *iface, const BYTE *pIDString,
+ DWORD dwIDStringLen, HWND *phwnd, DWORD *pidObject, DWORD *pidChild)
+{
+ FIXME("(%p %u %p %p %p)\n", pIDString, dwIDStringLen, phwnd, pidObject, pidChild);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHmenuProp(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
+ MSAAPROPID idProp, VARIANT var)
+{
+ FIXME("(%p %u %s %s)\n", hmenu, idChild, debugstr_guid(&idProp), debugstr_variant(&var));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHmenuPropStr(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
+ MSAAPROPID idProp, LPWSTR str)
+{
+ FIXME("(%p %u %s %s)\n", hmenu, idChild, debugstr_guid(&idProp), debugstr_w(str));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_SetHmenuPropServer(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
+ const MSAAPROPID *paProps, int cProps, IAccPropServer *pServer, AnnoScope AnnoScope)
+{
+ FIXME("(%p %u %p %d %p %u)\n", hmenu, idChild, paProps, cProps, pServer, AnnoScope);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_ClearHmenuProps(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
+ const MSAAPROPID *paProps, int cProps)
+{
+ FIXME("(%p %u %p %d)\n", hmenu, idChild, paProps, cProps);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_ComposeHmenuIdentityString(IAccPropServices *iface, HMENU hmenu, DWORD idChild,
+ BYTE **ppIDString, DWORD *pdwIDStringLen)
+{
+ FIXME("(%p %u %p %p)\n", hmenu, idChild, ppIDString, pdwIDStringLen);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI AccPropServices_DecomposeHmenuIdentityString(IAccPropServices *iface, const BYTE *pIDString,
+ DWORD dwIDStringLen, HMENU *phmenu, DWORD *pidChild)
+{
+ FIXME("(%p %u %p %p\n", pIDString, dwIDStringLen, phmenu, pidChild);
+ return E_NOTIMPL;
+}
+
+static const IAccPropServicesVtbl AccPropServicesVtbl = {
+ AccPropServices_QueryInterface,
+ AccPropServices_AddRef,
+ AccPropServices_Release,
+ AccPropServices_SetPropValue,
+ AccPropServices_SetPropServer,
+ AccPropServices_ClearProps,
+ AccPropServices_SetHwndProp,
+ AccPropServices_SetHwndPropStr,
+ AccPropServices_SetHwndPropServer,
+ AccPropServices_ClearHwndProps,
+ AccPropServices_ComposeHwndIdentityString,
+ AccPropServices_DecomposeHwndIdentityString,
+ AccPropServices_SetHmenuProp,
+ AccPropServices_SetHmenuPropStr,
+ AccPropServices_SetHmenuPropServer,
+ AccPropServices_ClearHmenuProps,
+ AccPropServices_ComposeHmenuIdentityString,
+ AccPropServices_DecomposeHmenuIdentityString
+};
+
+static IAccPropServices AccPropServices = { &AccPropServicesVtbl };
+
+static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
+{
+ *ppv = NULL;
+
+ if(IsEqualGUID(&IID_IUnknown, riid)) {
+ TRACE("(%p)->(IID_IUnknown %p)\n", iface, ppv);
+ *ppv = iface;
+ }else if(IsEqualGUID(&IID_IClassFactory, riid)) {
+ TRACE("(%p)->(IID_IClassFactory %p)\n", iface, ppv);
+ *ppv = iface;
+ }
+
+ if(*ppv) {
+ IUnknown_AddRef((IUnknown*)*ppv);
+ return S_OK;
+ }
+
+ FIXME("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
+{
+ TRACE("(%p)\n", iface);
+ return 2;
+}
+
+static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
+{
+ TRACE("(%p)\n", iface);
+ return 1;
+}
+
+static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
+{
+ TRACE("(%p)->(%x)\n", iface, fLock);
+ return S_OK;
+}
+
+static HRESULT WINAPI CAccPropServices_CreateInstance(IClassFactory *iface, IUnknown *outer,
+ REFIID riid, void **ppv)
+{
+ TRACE("(%p %s %p)\n", outer, debugstr_guid(riid), ppv);
+
+ if(outer) {
+ *ppv = NULL;
+ return CLASS_E_NOAGGREGATION;
+ }
+
+ return IAccPropServices_QueryInterface(&AccPropServices, riid, ppv);
+}
+
+static const IClassFactoryVtbl CAccPropServicesFactoryVtbl = {
+ ClassFactory_QueryInterface,
+ ClassFactory_AddRef,
+ ClassFactory_Release,
+ CAccPropServices_CreateInstance,
+ ClassFactory_LockServer
+};
+
+static IClassFactory CAccPropServicesFactory = { &CAccPropServicesFactoryVtbl };
+
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, void **ppv)
+{
+ if(IsEqualGUID(&CLSID_CAccPropServices, rclsid)) {
+ TRACE("(CLSID_CAccPropServices %s %p)\n", debugstr_guid(iid), ppv);
+ return IClassFactory_QueryInterface(&CAccPropServicesFactory, iid, ppv);
+ }
+
+ FIXME("%s %s %p: stub\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv);
+ return E_NOTIMPL;
+}
--- /dev/null
+/*
+ * Copyright 2014 Piotr Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define IDS_STATE_NORMAL 0x1000
+#define IDS_STATE_UNAVAILABLE 0x1001
+#define IDS_STATE_SELECTED 0x1002
+#define IDS_STATE_FOCUSED 0x1003
+#define IDS_STATE_PRESSED 0x1004
+#define IDS_STATE_CHECKED 0x1005
+#define IDS_STATE_MIXED 0x1006
+#define IDS_STATE_READONLY 0x1007
+#define IDS_STATE_HOTTRACKED 0x1008
+#define IDS_STATE_DEFAULT 0x1009
+#define IDS_STATE_EXPANDED 0x100a
+#define IDS_STATE_COLLAPSED 0x100b
+#define IDS_STATE_BUSY 0x100c
+#define IDS_STATE_FLOATING 0x100d
+#define IDS_STATE_MARQUEED 0x100e
+#define IDS_STATE_ANIMATED 0x100f
+#define IDS_STATE_INVISIBLE 0x1010
+#define IDS_STATE_OFFSCREEN 0x1011
+#define IDS_STATE_SIZEABLE 0x1012
+#define IDS_STATE_MOVEABLE 0x1013
+#define IDS_STATE_SELFVOICING 0x1014
+#define IDS_STATE_FOCUSABLE 0x1015
+#define IDS_STATE_SELECTABLE 0x1016
+#define IDS_STATE_LINKED 0x1017
+#define IDS_STATE_TRAVERSED 0x1018
+#define IDS_STATE_MULTISELECTABLE 0x1019
+#define IDS_STATE_EXTSELECTABLE 0x101a
+#define IDS_STATE_ALERT_LOW 0x101b
+#define IDS_STATE_ALERT_MEDIUM 0x101c
+#define IDS_STATE_ALERT_HIGH 0x101d
+#define IDS_STATE_PROTECTED 0x101e
+#define IDS_STATE_HASPOPUP 0x101f
--- /dev/null
+/*
+ * Copyright 2014 Piotr Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "oleacc_private.h"
+
+typedef struct {
+ IAccessible IAccessible_iface;
+ IOleWindow IOleWindow_iface;
+
+ LONG ref;
+} Window;
+
+static inline Window* impl_from_Window(IAccessible *iface)
+{
+ return CONTAINING_RECORD(iface, Window, IAccessible_iface);
+}
+
+static HRESULT WINAPI Window_QueryInterface(IAccessible *iface, REFIID riid, void **ppv)
+{
+ Window *This = impl_from_Window(iface);
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
+
+ if(IsEqualIID(riid, &IID_IAccessible) ||
+ IsEqualIID(riid, &IID_IDispatch) ||
+ IsEqualIID(riid, &IID_IUnknown)) {
+ *ppv = iface;
+ }else if(IsEqualIID(riid, &IID_IOleWindow)) {
+ *ppv = &This->IOleWindow_iface;
+ }else {
+ WARN("no interface: %s\n", debugstr_guid(riid));
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+
+ IAccessible_AddRef(iface);
+ return S_OK;
+}
+
+static ULONG WINAPI Window_AddRef(IAccessible *iface)
+{
+ Window *This = impl_from_Window(iface);
+ ULONG ref = InterlockedIncrement(&This->ref);
+
+ TRACE("(%p) ref = %u\n", This, ref);
+ return ref;
+}
+
+static ULONG WINAPI Window_Release(IAccessible *iface)
+{
+ Window *This = impl_from_Window(iface);
+ ULONG ref = InterlockedDecrement(&This->ref);
+
+ TRACE("(%p) ref = %u\n", This, ref);
+
+ if(!ref)
+ heap_free(This);
+ return ref;
+}
+
+static HRESULT WINAPI Window_GetTypeInfoCount(IAccessible *iface, UINT *pctinfo)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p)\n", This, pctinfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_GetTypeInfo(IAccessible *iface,
+ UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%u %x %p)\n", This, iTInfo, lcid, ppTInfo);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_GetIDsOfNames(IAccessible *iface, REFIID riid,
+ LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p %u %x %p)\n", This, debugstr_guid(riid),
+ rgszNames, cNames, lcid, rgDispId);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_Invoke(IAccessible *iface, DISPID dispIdMember,
+ REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+ VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%x %s %x %x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
+ lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accParent(IAccessible *iface, IDispatch **ppdispParent)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p)\n", This, ppdispParent);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accChildCount(IAccessible *iface, LONG *pcountChildren)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p)\n", This, pcountChildren);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accChild(IAccessible *iface,
+ VARIANT varChildID, IDispatch **ppdispChild)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varChildID), ppdispChild);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accName(IAccessible *iface, VARIANT varID, BSTR *pszName)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszName);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accValue(IAccessible *iface, VARIANT varID, BSTR *pszValue)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszValue);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accDescription(IAccessible *iface,
+ VARIANT varID, BSTR *pszDescription)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDescription);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accRole(IAccessible *iface, VARIANT varID, VARIANT *pvarRole)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarRole);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accState(IAccessible *iface, VARIANT varID, VARIANT *pvarState)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pvarState);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accHelp(IAccessible *iface, VARIANT varID, BSTR *pszHelp)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszHelp);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accHelpTopic(IAccessible *iface,
+ BSTR *pszHelpFile, VARIANT varID, LONG *pidTopic)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p %s %p)\n", This, pszHelpFile, debugstr_variant(&varID), pidTopic);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accKeyboardShortcut(IAccessible *iface,
+ VARIANT varID, BSTR *pszKeyboardShortcut)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszKeyboardShortcut);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accFocus(IAccessible *iface, VARIANT *pvarID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p)\n", This, pvarID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accSelection(IAccessible *iface, VARIANT *pvarID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p)\n", This, pvarID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_get_accDefaultAction(IAccessible *iface,
+ VARIANT varID, BSTR *pszDefaultAction)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %p)\n", This, debugstr_variant(&varID), pszDefaultAction);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_accSelect(IAccessible *iface, LONG flagsSelect, VARIANT varID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%x %s)\n", This, flagsSelect, debugstr_variant(&varID));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_accLocation(IAccessible *iface, LONG *pxLeft,
+ LONG *pyTop, LONG *pcxWidth, LONG *pcyHeight, VARIANT varID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%p %p %p %p %s)\n", This, pxLeft, pyTop,
+ pcxWidth, pcyHeight, debugstr_variant(&varID));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_accNavigate(IAccessible *iface,
+ LONG navDir, VARIANT varStart, VARIANT *pvarEnd)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%d %s %p)\n", This, navDir, debugstr_variant(&varStart), pvarEnd);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_accHitTest(IAccessible *iface,
+ LONG xLeft, LONG yTop, VARIANT *pvarID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%d %d %p)\n", This, xLeft, yTop, pvarID);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_accDoDefaultAction(IAccessible *iface, VARIANT varID)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s)\n", This, debugstr_variant(&varID));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_put_accName(IAccessible *iface, VARIANT varID, BSTR pszName)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszName));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_put_accValue(IAccessible *iface, VARIANT varID, BSTR pszValue)
+{
+ Window *This = impl_from_Window(iface);
+ FIXME("(%p)->(%s %s)\n", This, debugstr_variant(&varID), debugstr_w(pszValue));
+ return E_NOTIMPL;
+}
+
+static const IAccessibleVtbl WindowVtbl = {
+ Window_QueryInterface,
+ Window_AddRef,
+ Window_Release,
+ Window_GetTypeInfoCount,
+ Window_GetTypeInfo,
+ Window_GetIDsOfNames,
+ Window_Invoke,
+ Window_get_accParent,
+ Window_get_accChildCount,
+ Window_get_accChild,
+ Window_get_accName,
+ Window_get_accValue,
+ Window_get_accDescription,
+ Window_get_accRole,
+ Window_get_accState,
+ Window_get_accHelp,
+ Window_get_accHelpTopic,
+ Window_get_accKeyboardShortcut,
+ Window_get_accFocus,
+ Window_get_accSelection,
+ Window_get_accDefaultAction,
+ Window_accSelect,
+ Window_accLocation,
+ Window_accNavigate,
+ Window_accHitTest,
+ Window_accDoDefaultAction,
+ Window_put_accName,
+ Window_put_accValue
+};
+
+static inline Window* impl_from_Window_OleWindow(IOleWindow *iface)
+{
+ return CONTAINING_RECORD(iface, Window, IOleWindow_iface);
+}
+
+static HRESULT WINAPI Window_OleWindow_QueryInterface(IOleWindow *iface, REFIID riid, void **ppv)
+{
+ Window *This = impl_from_Window_OleWindow(iface);
+ return IAccessible_QueryInterface(&This->IAccessible_iface, riid, ppv);
+}
+
+static ULONG WINAPI Window_OleWindow_AddRef(IOleWindow *iface)
+{
+ Window *This = impl_from_Window_OleWindow(iface);
+ return IAccessible_AddRef(&This->IAccessible_iface);
+}
+
+static ULONG WINAPI Window_OleWindow_Release(IOleWindow *iface)
+{
+ Window *This = impl_from_Window_OleWindow(iface);
+ return IAccessible_Release(&This->IAccessible_iface);
+}
+
+static HRESULT WINAPI Window_OleWindow_GetWindow(IOleWindow *iface, HWND *phwnd)
+{
+ Window *This = impl_from_Window_OleWindow(iface);
+ FIXME("(%p)->(%p)\n", This, phwnd);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI Window_OleWindow_ContextSensitiveHelp(IOleWindow *iface, BOOL fEnterMode)
+{
+ Window *This = impl_from_Window_OleWindow(iface);
+ FIXME("(%p)->(%x)\n", This, fEnterMode);
+ return E_NOTIMPL;
+}
+
+static const IOleWindowVtbl WindowOleWindowVtbl = {
+ Window_OleWindow_QueryInterface,
+ Window_OleWindow_AddRef,
+ Window_OleWindow_Release,
+ Window_OleWindow_GetWindow,
+ Window_OleWindow_ContextSensitiveHelp
+};
+
+HRESULT create_window_object(HWND hwnd, const IID *iid, void **obj)
+{
+ Window *window;
+ HRESULT hres;
+
+ if(!IsWindow(hwnd))
+ return E_FAIL;
+
+ window = heap_alloc_zero(sizeof(Window));
+ if(!window)
+ return E_OUTOFMEMORY;
+
+ window->IAccessible_iface.lpVtbl = &WindowVtbl;
+ window->IOleWindow_iface.lpVtbl = &WindowOleWindowVtbl;
+ window->ref = 1;
+
+ hres = IAccessible_QueryInterface(&window->IAccessible_iface, iid, obj);
+ IAccessible_Release(&window->IAccessible_iface);
+ return hres;
+}
reactos/dll/win32/odbc32 # Synced to Wine-1.7.17. Depends on port of Linux ODBC.
reactos/dll/win32/odbccp32 # Synced to Wine-1.7.17
reactos/dll/win32/ole32 # Synced to Wine-1.7.27
-reactos/dll/win32/oleacc # Synced to Wine-1.7.17
+reactos/dll/win32/oleacc # Synced to Wine-1.7.27
reactos/dll/win32/oleaut32 # Synced to Wine-1.7.17
reactos/dll/win32/olecli32 # Synced to Wine-1.7.17
reactos/dll/win32/oledlg # Synced to Wine-1.7.17