* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64503
This commit is contained in:
Amine Khaldi 2014-10-03 16:42:05 +00:00
parent 96edd470cf
commit 5deff46cef
28 changed files with 2372 additions and 147 deletions

View 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)

View file

@ -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;
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View file

@ -18,77 +18,108 @@
* 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View 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"
}

View file

@ -18,42 +18,306 @@
* 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;
HRESULT WINAPI CreateStdAccessibleObject( HWND hwnd, LONG idObject,
REFIID riidInterface, void** ppvObject )
int convert_child_id(VARIANT *v)
{
FIXME("%p %d %s %p\n", hwnd, idObject,
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 )
{
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,10 +455,16 @@ UINT WINAPI GetRoleTextA(DWORD role, LPSTR lpRole, UINT rolemax)
TRACE("%u %p %u\n", role, lpRole, rolemax);
length = GetRoleTextW(role, NULL, 0);
if((length == 0) || (lpRole && !rolemax))
if(lpRole && !rolemax)
return 0;
length = GetRoleTextW(role, NULL, 0);
if(!length) {
if(lpRole && rolemax)
lpRole[0] = 0;
return 0;
}
roletextW = HeapAlloc(GetProcessHeap(), 0, (length + 1)*sizeof(WCHAR));
if(!roletextW)
return 0;
@ -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));
}
}

View file

@ -18,12 +18,25 @@
* 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

View 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)

View file

@ -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_ */

View file

@ -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;
}

View file

@ -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

View file

@ -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;
}

View 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