[OLEACC]
authorAmine Khaldi <amine.khaldi@reactos.org>
Fri, 3 Oct 2014 16:42:05 +0000 (16:42 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Fri, 3 Oct 2014 16:42:05 +0000 (16:42 +0000)
* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64503

28 files changed:
reactos/dll/win32/oleacc/CMakeLists.txt
reactos/dll/win32/oleacc/client.c [new file with mode: 0644]
reactos/dll/win32/oleacc/lang/oleacc_De.rc
reactos/dll/win32/oleacc/lang/oleacc_En.rc
reactos/dll/win32/oleacc/lang/oleacc_Fr.rc
reactos/dll/win32/oleacc/lang/oleacc_He.rc
reactos/dll/win32/oleacc/lang/oleacc_Hu.rc
reactos/dll/win32/oleacc/lang/oleacc_It.rc
reactos/dll/win32/oleacc/lang/oleacc_Ko.rc
reactos/dll/win32/oleacc/lang/oleacc_Lt.rc
reactos/dll/win32/oleacc/lang/oleacc_Nl.rc
reactos/dll/win32/oleacc/lang/oleacc_No.rc
reactos/dll/win32/oleacc/lang/oleacc_Pl.rc
reactos/dll/win32/oleacc/lang/oleacc_Pt.rc
reactos/dll/win32/oleacc/lang/oleacc_Ro.rc
reactos/dll/win32/oleacc/lang/oleacc_Ru.rc
reactos/dll/win32/oleacc/lang/oleacc_Si.rc
reactos/dll/win32/oleacc/lang/oleacc_Sq.rc
reactos/dll/win32/oleacc/lang/oleacc_Tr.rc
reactos/dll/win32/oleacc/lang/oleacc_Uk.rc
reactos/dll/win32/oleacc/main.c
reactos/dll/win32/oleacc/oleacc.rc
reactos/dll/win32/oleacc/oleacc.spec
reactos/dll/win32/oleacc/oleacc_private.h [new file with mode: 0644]
reactos/dll/win32/oleacc/propservice.c [new file with mode: 0644]
reactos/dll/win32/oleacc/resource.h [new file with mode: 0644]
reactos/dll/win32/oleacc/window.c [new file with mode: 0644]
reactos/media/doc/README.WINE

index 566d1ed..a2c1007 100644 (file)
@@ -4,9 +4,11 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine)
 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)
 
@@ -16,9 +18,15 @@ list(APPEND oleacc_rc_deps
 
 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)
diff --git a/reactos/dll/win32/oleacc/client.c b/reactos/dll/win32/oleacc/client.c
new file mode 100644 (file)
index 0000000..0629feb
--- /dev/null
@@ -0,0 +1,509 @@
+/*
+ * 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;
+}
index cc0bb0d..44620ad 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 #pragma code_page(65001)
 
 LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
@@ -91,4 +89,37 @@ STRINGTABLE
     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"
 }
index 37d3a55..f1b12ef 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index ef21c08..65a0f22 100644 (file)
@@ -19,8 +19,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -93,4 +91,37 @@ STRINGTABLE
     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"
 }
index 985af39..fdc516c 100644 (file)
@@ -20,8 +20,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
 
 STRINGTABLE
@@ -91,4 +89,37 @@ 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"
 }
index 63ce741..5d50a99 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -92,4 +90,37 @@ STRINGTABLE
     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"
 }
index 9745693..3f8d10d 100644 (file)
@@ -19,8 +19,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -93,4 +91,37 @@ STRINGTABLE
     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"
 }
index 19d5d38..c0d6715 100644 (file)
@@ -19,8 +19,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
 
 STRINGTABLE
@@ -90,4 +88,37 @@ 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"
 }
index c6d57b8..60f4087 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -92,4 +90,37 @@ STRINGTABLE
     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"
 }
index ccef803..1f70715 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index 6eb25d1..e05ae90 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -92,4 +90,37 @@ STRINGTABLE
     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"
 }
index 87e3917..bbd1bf7 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index d692ddd..f09868a 100644 (file)
@@ -19,8 +19,6 @@
  * 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
@@ -92,6 +90,39 @@ STRINGTABLE
     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
@@ -163,4 +194,37 @@ STRINGTABLE
     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"
 }
index 1081e5a..87ff65e 100644 (file)
  * 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"
 }
index d3ed5c8..050c707 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index 2622901..cee2ab3 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 #pragma code_page(65001)
 
 LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
@@ -91,4 +89,37 @@ STRINGTABLE
     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"
 }
index 6ab38a9..1f5171c 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index 41ce38e..b2968f1 100644 (file)
@@ -18,8 +18,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
 
 STRINGTABLE
@@ -89,4 +87,37 @@ 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"
 }
index 10cead7..55da93f 100644 (file)
@@ -20,8 +20,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#include "oleacc.h"
-
 /* UTF-8 */
 #pragma code_page(65001)
 
@@ -94,4 +92,37 @@ 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"
 }
index 148dd87..a373988 100644 (file)
  * 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 )
@@ -65,9 +329,58 @@ HRESULT WINAPI AccessibleObjectFromPoint( POINT ptScreen, IAccessible** ppacc, V
 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,
@@ -85,22 +398,16 @@ 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)
@@ -109,6 +416,18 @@ 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;
@@ -136,9 +455,15 @@ UINT WINAPI GetRoleTextA(DWORD role, LPSTR lpRole, UINT rolemax)
 
     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)
@@ -153,6 +478,12 @@ UINT WINAPI GetRoleTextA(DWORD role, LPSTR lpRole, UINT rolemax)
         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){
@@ -164,3 +495,65 @@ UINT WINAPI GetRoleTextA(DWORD role, LPSTR lpRole, UINT rolemax)
 
     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));
+    }
+}
index 7b51c34..cdd7d2e 100644 (file)
  * 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
index 6851454..9f3a9a0 100644 (file)
@@ -9,13 +9,14 @@
 @ 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)
diff --git a/reactos/dll/win32/oleacc/oleacc_private.h b/reactos/dll/win32/oleacc/oleacc_private.h
new file mode 100644 (file)
index 0000000..726aa49
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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_ */
diff --git a/reactos/dll/win32/oleacc/propservice.c b/reactos/dll/win32/oleacc/propservice.c
new file mode 100644 (file)
index 0000000..58a113d
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * 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;
+}
diff --git a/reactos/dll/win32/oleacc/resource.h b/reactos/dll/win32/oleacc/resource.h
new file mode 100644 (file)
index 0000000..d97697b
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * 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
diff --git a/reactos/dll/win32/oleacc/window.c b/reactos/dll/win32/oleacc/window.c
new file mode 100644 (file)
index 0000000..a659ada
--- /dev/null
@@ -0,0 +1,361 @@
+/*
+ * 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;
+}
index fb19d03..4d0db59 100644 (file)
@@ -151,7 +151,7 @@ reactos/dll/win32/objsel              # Synced to Wine-1.7.17
 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