mirror of
https://github.com/reactos/reactos.git
synced 2024-12-30 19:14:31 +00:00
[OLEACC]
* Sync with Wine 1.7.27. CORE-8540 svn path=/trunk/; revision=64503
This commit is contained in:
parent
96edd470cf
commit
5deff46cef
28 changed files with 2372 additions and 147 deletions
|
@ -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)
|
||||
|
|
509
reactos/dll/win32/oleacc/client.c
Normal file
509
reactos/dll/win32/oleacc/client.c
Normal 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;
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
51
reactos/dll/win32/oleacc/oleacc_private.h
Normal file
51
reactos/dll/win32/oleacc/oleacc_private.h
Normal 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_ */
|
248
reactos/dll/win32/oleacc/propservice.c
Normal file
248
reactos/dll/win32/oleacc/propservice.c
Normal 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;
|
||||
}
|
50
reactos/dll/win32/oleacc/resource.h
Normal file
50
reactos/dll/win32/oleacc/resource.h
Normal 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
|
361
reactos/dll/win32/oleacc/window.c
Normal file
361
reactos/dll/win32/oleacc/window.c
Normal 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;
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue