1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski #ifndef __MACCESSIBLE_H_ 23*b1cdbd2cSJim Jagielski #define __MACCESSIBLE_H_ 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski #include <Windows.h> 26*b1cdbd2cSJim Jagielski #include "resource.h" // main symbols 27*b1cdbd2cSJim Jagielski #include <vector> 28*b1cdbd2cSJim Jagielski #include <map> 29*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessible.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleSelection.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/accessibility/XAccessibleAction.hpp> 32*b1cdbd2cSJim Jagielski #include <AccObjectManagerAgent.hxx> 33*b1cdbd2cSJim Jagielski #include "EnumVariant.h" 34*b1cdbd2cSJim Jagielski #ifndef __ACCCOMMON_H_ 35*b1cdbd2cSJim Jagielski #include "acccommon.h" 36*b1cdbd2cSJim Jagielski #endif 37*b1cdbd2cSJim Jagielski #ifndef _RTL_USTRING_HXX_ 38*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 39*b1cdbd2cSJim Jagielski #endif 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski #define CHILDID_SELF 0 42*b1cdbd2cSJim Jagielski #define OBJID_WINDOW ((LONG)0x00000000) 43*b1cdbd2cSJim Jagielski #define OBJID_SYSMENU ((LONG)0xFFFFFFFF) 44*b1cdbd2cSJim Jagielski #define OBJID_TITLEBAR ((LONG)0xFFFFFFFE) 45*b1cdbd2cSJim Jagielski #define OBJID_MENU ((LONG)0xFFFFFFFD) 46*b1cdbd2cSJim Jagielski #define OBJID_CLIENT ((LONG)0xFFFFFFFC) 47*b1cdbd2cSJim Jagielski #define OBJID_VSCROLL ((LONG)0xFFFFFFFB) 48*b1cdbd2cSJim Jagielski #define OBJID_HSCROLL ((LONG)0xFFFFFFFA) 49*b1cdbd2cSJim Jagielski #define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9) 50*b1cdbd2cSJim Jagielski #define OBJID_CARET ((LONG)0xFFFFFFF8) 51*b1cdbd2cSJim Jagielski #define OBJID_CURSOR ((LONG)0xFFFFFFF7) 52*b1cdbd2cSJim Jagielski #define OBJID_ALERT ((LONG)0xFFFFFFF6) 53*b1cdbd2cSJim Jagielski #define OBJID_SOUND ((LONG)0xFFFFFFF5) 54*b1cdbd2cSJim Jagielski #define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4) 55*b1cdbd2cSJim Jagielski #define OBJID_NATIVEOM ((LONG)0xFFFFFFF0) 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski using namespace rtl; 58*b1cdbd2cSJim Jagielski /** 59*b1cdbd2cSJim Jagielski *This class implements IMAccessible interface, which inherits from IAccessible2, and 60*b1cdbd2cSJim Jagielski *in turn inherits from IAccessible. So its methods include the methods defined only in 61*b1cdbd2cSJim Jagielski *IAccessible, plus the methods defined only in IAccessible2, plus the methods defined 62*b1cdbd2cSJim Jagielski *only in IMAccessible. 63*b1cdbd2cSJim Jagielski */ 64*b1cdbd2cSJim Jagielski class ATL_NO_VTABLE CMAccessible : 65*b1cdbd2cSJim Jagielski public CComObjectRoot, 66*b1cdbd2cSJim Jagielski public CComCoClass<CMAccessible, &CLSID_MAccessible>, 67*b1cdbd2cSJim Jagielski public IDispatchImpl<IMAccessible, &IID_IMAccessible, &LIBID_UACCCOMLib>, 68*b1cdbd2cSJim Jagielski public IServiceProvider, 69*b1cdbd2cSJim Jagielski public IAccessibleApplication 70*b1cdbd2cSJim Jagielski { 71*b1cdbd2cSJim Jagielski typedef map< const GUID, CComPtr<IUnknown> ,ltComp > XGUIDToComObjHash; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski typedef HRESULT (WINAPI _UNO_AGGCREATORFUNC)(void*, REFIID, LPVOID*); 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski struct _UNO_AGGMAP_ENTRY 76*b1cdbd2cSJim Jagielski { 77*b1cdbd2cSJim Jagielski const IID* piid; 78*b1cdbd2cSJim Jagielski _UNO_AGGCREATORFUNC* pfnCreateInstance; 79*b1cdbd2cSJim Jagielski int XIFIndex; 80*b1cdbd2cSJim Jagielski }; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski enum XInterfaceIndex { 83*b1cdbd2cSJim Jagielski XI_COMPONENT = 0x01, 84*b1cdbd2cSJim Jagielski XI_TEXT = 0x02, 85*b1cdbd2cSJim Jagielski XI_TABLE = 0x03, 86*b1cdbd2cSJim Jagielski XI_EDITABLETEXT = 0x04, 87*b1cdbd2cSJim Jagielski XI_IMAGE = 0x05, 88*b1cdbd2cSJim Jagielski XI_SELECTION = 0x06, 89*b1cdbd2cSJim Jagielski XI_EXTENDEDCOMP = 0x07, 90*b1cdbd2cSJim Jagielski XI_VALUE = 0x08, 91*b1cdbd2cSJim Jagielski XI_KEYBINDING = 0x09, 92*b1cdbd2cSJim Jagielski XI_ACTION = 0x0A, 93*b1cdbd2cSJim Jagielski XI_HYPERTEXT = 0x0B, 94*b1cdbd2cSJim Jagielski XI_HYPERLINK = 0x0C, 95*b1cdbd2cSJim Jagielski XI_ATTRIBUTE = 0x0D, 96*b1cdbd2cSJim Jagielski XI_NULL = -1 97*b1cdbd2cSJim Jagielski }; 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski public: 100*b1cdbd2cSJim Jagielski CMAccessible(); 101*b1cdbd2cSJim Jagielski virtual ~CMAccessible(); 102*b1cdbd2cSJim Jagielski DECLARE_REGISTRY_RESOURCEID(IDR_MACCESSIBLE) 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski DECLARE_GET_CONTROLLING_UNKNOWN() 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski DECLARE_PROTECT_FINAL_CONSTRUCT() 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski BEGIN_COM_MAP(CMAccessible) 109*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IMAccessible) 110*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IAccessible) 111*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IAccessible2) 112*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IDispatch) 113*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IAccessibleApplication) 114*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY(IServiceProvider) 115*b1cdbd2cSJim Jagielski COM_INTERFACE_ENTRY_FUNC_BLIND(NULL,_SmartQI) 116*b1cdbd2cSJim Jagielski END_COM_MAP() 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski // AGGREGATE OBJECT MAP 119*b1cdbd2cSJim Jagielski BEGIN_AGGOBJECT_MAP(CMAccessible) 120*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleComponent, CLSID_AccComponent, COMPONENT) 121*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleText, CLSID_AccText, TEXT) 122*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleEditableText, CLSID_AccEditableText, EDITABLETEXT) 123*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleImage, CLSID_AccImage, IMAGE) 124*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleTable, CLSID_AccTable, TABLE) 125*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleAction, CLSID_AccAction, ACTION) 126*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleValue, CLSID_AccValue, VALUE) 127*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleHypertext, CLSID_AccHypertext, HYPERTEXT) 128*b1cdbd2cSJim Jagielski AGGOBJECT_ENTRY(IID_IAccessibleHyperlink, CLSID_AccHyperLink, HYPERLINK) 129*b1cdbd2cSJim Jagielski 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski END_AGGOBJECT_MAP() 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski // IMAccessible 134*b1cdbd2cSJim Jagielski STDMETHOD(put_accValue)(VARIANT varChild,BSTR szValue); 135*b1cdbd2cSJim Jagielski STDMETHOD(put_accName)(VARIANT varChild,BSTR szName); 136*b1cdbd2cSJim Jagielski STDMETHOD(accDoDefaultAction)(VARIANT varChild); 137*b1cdbd2cSJim Jagielski STDMETHOD(accHitTest)(long xLeft,long yTop,VARIANT *pvarChild); 138*b1cdbd2cSJim Jagielski STDMETHOD(accNavigate)(long navDir,VARIANT varStart,VARIANT *pvarEndUpAt); 139*b1cdbd2cSJim Jagielski STDMETHOD(accLocation)(long *pxLeft,long *pyTop,long *pcxWidth,long *pcyHeight,VARIANT varChild); 140*b1cdbd2cSJim Jagielski STDMETHOD(accSelect)(long flagsSelect,VARIANT varChild); 141*b1cdbd2cSJim Jagielski STDMETHOD(get_accDefaultAction)( VARIANT varChild,BSTR *pszDefaultAction); 142*b1cdbd2cSJim Jagielski STDMETHOD(get_accSelection)(VARIANT *pvarChildren); 143*b1cdbd2cSJim Jagielski STDMETHOD(get_accFocus)(VARIANT *pvarChild); 144*b1cdbd2cSJim Jagielski STDMETHOD(get_accKeyboardShortcut)( VARIANT varChild,BSTR *pszKeyboardShortcut); 145*b1cdbd2cSJim Jagielski STDMETHOD(get_accHelpTopic)(BSTR *pszHelpFile,VARIANT varChild,long *pidTopic); 146*b1cdbd2cSJim Jagielski STDMETHOD(get_accHelp)(VARIANT varChild,BSTR *pszHelp); 147*b1cdbd2cSJim Jagielski STDMETHOD(get_accState)(VARIANT varChild,VARIANT *pvarState); 148*b1cdbd2cSJim Jagielski STDMETHOD(get_accRole)(VARIANT varChild,VARIANT *pvarRole); 149*b1cdbd2cSJim Jagielski STDMETHOD(get_accDescription)(VARIANT varChild,BSTR *pszDescription); 150*b1cdbd2cSJim Jagielski STDMETHOD(get_accValue)( VARIANT varChild,BSTR *pszValue); 151*b1cdbd2cSJim Jagielski STDMETHOD(get_accName)(VARIANT varChild,BSTR *pszName); 152*b1cdbd2cSJim Jagielski STDMETHOD(get_accChild)(VARIANT varChild,IDispatch **ppdispChild); 153*b1cdbd2cSJim Jagielski STDMETHOD(get_accChildCount)(long *pcountChildren); 154*b1cdbd2cSJim Jagielski STDMETHOD(get_accParent)( IDispatch **ppdispParent); 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski // methods which are defined only in the IAccessible2 157*b1cdbd2cSJim Jagielski // These methods only declare here, and their implementation bodies are empty now. 158*b1cdbd2cSJim Jagielski STDMETHOD(get_nRelations)( long __RPC_FAR *nRelations) ; 159*b1cdbd2cSJim Jagielski STDMETHOD(get_relation)( long relationIndex, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation) ; 160*b1cdbd2cSJim Jagielski STDMETHOD(get_relations)( long maxRelations, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation, long __RPC_FAR *nRelations) ; 161*b1cdbd2cSJim Jagielski STDMETHOD(role)(long __RPC_FAR *role); 162*b1cdbd2cSJim Jagielski STDMETHOD(get_nActions)(long __RPC_FAR *nActions); 163*b1cdbd2cSJim Jagielski STDMETHOD(scrollTo)(enum IA2ScrollType scrollType); 164*b1cdbd2cSJim Jagielski STDMETHOD(scrollToPoint)(enum IA2CoordinateType coordinateType, long x, long y); 165*b1cdbd2cSJim Jagielski STDMETHOD(get_groupPosition)(long __RPC_FAR *groupLevel,long __RPC_FAR *similarItemsInGroup,long __RPC_FAR *positionInGroup); 166*b1cdbd2cSJim Jagielski STDMETHOD(get_states)( AccessibleStates __RPC_FAR *states ); 167*b1cdbd2cSJim Jagielski STDMETHOD(get_extendedRole)( BSTR __RPC_FAR *extendedRole ); 168*b1cdbd2cSJim Jagielski STDMETHOD(get_localizedExtendedRole)( BSTR __RPC_FAR *localizedExtendedRole ); 169*b1cdbd2cSJim Jagielski STDMETHOD(get_nExtendedStates)( long __RPC_FAR *nExtendedStates); 170*b1cdbd2cSJim Jagielski STDMETHOD(get_extendedStates)( long maxExtendedStates, BSTR __RPC_FAR *__RPC_FAR *extendedStates, long __RPC_FAR *nExtendedStates); 171*b1cdbd2cSJim Jagielski STDMETHOD(get_localizedExtendedStates)(long maxLocalizedExtendedStates,BSTR __RPC_FAR *__RPC_FAR *localizedExtendedStates,long __RPC_FAR *nLocalizedExtendedStates); 172*b1cdbd2cSJim Jagielski STDMETHOD(get_uniqueID)(long __RPC_FAR *uniqueID); 173*b1cdbd2cSJim Jagielski STDMETHOD(get_windowHandle)(HWND __RPC_FAR *windowHandle); 174*b1cdbd2cSJim Jagielski STDMETHOD(get_indexInParent)( long __RPC_FAR *accParentIndex ); 175*b1cdbd2cSJim Jagielski STDMETHOD(get_locale)( IA2Locale __RPC_FAR *locale ); 176*b1cdbd2cSJim Jagielski STDMETHOD(get_attributes)(/*[out]*/ BSTR *pAttr); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski //IServiceProvider. 179*b1cdbd2cSJim Jagielski STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void** ppvObject); 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski //IAccessibleApplication 182*b1cdbd2cSJim Jagielski STDMETHOD(get_appName)(BSTR __RPC_FAR *name); 183*b1cdbd2cSJim Jagielski STDMETHOD(get_appVersion)(BSTR __RPC_FAR *version); 184*b1cdbd2cSJim Jagielski STDMETHOD(get_toolkitName)(BSTR __RPC_FAR *name); 185*b1cdbd2cSJim Jagielski STDMETHOD(get_toolkitVersion)(BSTR __RPC_FAR *version); 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski // methods which are defined only in IMAccessible 188*b1cdbd2cSJim Jagielski // These methods are provided for UNO management system. 189*b1cdbd2cSJim Jagielski // The UNO management system use these methods to put Accessibility 190*b1cdbd2cSJim Jagielski // information to COM. 191*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccName)(const OLECHAR __RPC_FAR *pszName); 192*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccRole)(unsigned short pRole); 193*b1cdbd2cSJim Jagielski STDMETHOD(DecreaseState)(DWORD pXSate); 194*b1cdbd2cSJim Jagielski STDMETHOD(IncreaseState)(DWORD pXSate); 195*b1cdbd2cSJim Jagielski STDMETHOD(SetState)(DWORD pXSate); 196*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccDescription)(const OLECHAR __RPC_FAR *pszDescription); 197*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccValue)(const OLECHAR __RPC_FAR *pszAccValue); 198*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccLocation)(const Location sLocation); 199*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccFocus)(long dChildID); 200*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccParent)(IMAccessible __RPC_FAR *pIParent); 201*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccWindowHandle)(HWND hwnd); 202*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccChildID)(long dChildID); 203*b1cdbd2cSJim Jagielski STDMETHOD(Put_XAccAgent)(long pAgent); 204*b1cdbd2cSJim Jagielski STDMETHOD(NotifyDestroy)(BOOL isDestroy); 205*b1cdbd2cSJim Jagielski STDMETHOD(Put_ActionDescription)( const OLECHAR* szAction); 206*b1cdbd2cSJim Jagielski STDMETHOD(SetDefaultAction)(long pAction); 207*b1cdbd2cSJim Jagielski STDMETHOD(GetUNOInterface)(long*); 208*b1cdbd2cSJim Jagielski STDMETHOD(SetXAccessible)(long); 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski private: 211*b1cdbd2cSJim Jagielski OLECHAR* m_pszName; 212*b1cdbd2cSJim Jagielski OLECHAR* m_pszValue; 213*b1cdbd2cSJim Jagielski OLECHAR* m_pszActionDescription; 214*b1cdbd2cSJim Jagielski unsigned short m_iRole; 215*b1cdbd2cSJim Jagielski DWORD m_dState; 216*b1cdbd2cSJim Jagielski OLECHAR* m_pszDescription; 217*b1cdbd2cSJim Jagielski IMAccessible* m_pIParent; 218*b1cdbd2cSJim Jagielski Location m_sLocation; 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski // identify a COM object/Acc object uniquely 221*b1cdbd2cSJim Jagielski long m_dChildID; 222*b1cdbd2cSJim Jagielski // specify the focus child ID in object self and its direct children 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski long m_dFocusChildID; 225*b1cdbd2cSJim Jagielski // parent window handle,will be used in the future application, its value comes from UNO 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski HWND m_hwnd; 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski // the COM class which implements IEnumVARIANT interface,currently only used in 230*b1cdbd2cSJim Jagielski // the implementation of get_accSelection 231*b1cdbd2cSJim Jagielski CEnumVariant* m_pEnumVar; 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski // specify if the XAccessible is invalid 234*b1cdbd2cSJim Jagielski BOOL m_isDestroy; 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski XAccessible* pUNOInterface; 237*b1cdbd2cSJim Jagielski Reference< XAccessible > pRef; 238*b1cdbd2cSJim Jagielski XAccessible* pAchorUNOInterface; 239*b1cdbd2cSJim Jagielski XAccessibleAction* m_pXAction; 240*b1cdbd2cSJim Jagielski XAccessibleContext* pRContextInterface; 241*b1cdbd2cSJim Jagielski Reference<XAccessibleContext> pRContext; 242*b1cdbd2cSJim Jagielski 243*b1cdbd2cSJim Jagielski private: 244*b1cdbd2cSJim Jagielski 245*b1cdbd2cSJim Jagielski // the helper methods in order to implement the above public methods 246*b1cdbd2cSJim Jagielski IMAccessible* GetChildInterface(long dChildIndex);//notice here the parameter is child index,not child id 247*b1cdbd2cSJim Jagielski IMAccessible* GetNavigateChildForDM(VARIANT varCur,short flags);//for decendant manage 248*b1cdbd2cSJim Jagielski HRESULT GetFirstChild(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation 249*b1cdbd2cSJim Jagielski HRESULT GetLastChild(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation 250*b1cdbd2cSJim Jagielski HRESULT GetNextSibling(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation 251*b1cdbd2cSJim Jagielski HRESULT GetPreSibling(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation 252*b1cdbd2cSJim Jagielski BOOL IsDecendantManage();//identify whether the current COM belongs to manage_decendant roles 253*b1cdbd2cSJim Jagielski 254*b1cdbd2cSJim Jagielski // the following private methods are used to implement accSelect method 255*b1cdbd2cSJim Jagielski HRESULT SelectChild(XAccessible* pItem); 256*b1cdbd2cSJim Jagielski HRESULT DeSelectChild(XAccessible* pItem); 257*b1cdbd2cSJim Jagielski HRESULT SelectMutipleChidren( XAccessible** pItem,int size ); 258*b1cdbd2cSJim Jagielski HRESULT DeSelectMutipleChildren( XAccessible** pItem,int size ); 259*b1cdbd2cSJim Jagielski XAccessibleContext* GetContextByXAcc( XAccessible* pXAcc ); 260*b1cdbd2cSJim Jagielski Reference< XAccessibleSelection > GetSelection(); 261*b1cdbd2cSJim Jagielski // end accSelect implementation methods 262*b1cdbd2cSJim Jagielski BOOL GetXInterfaceFromXAccessible(XAccessible*, XInterface**, int); 263*b1cdbd2cSJim Jagielski HRESULT WINAPI SmartQI(void* pv, REFIID iid, void** ppvObject); 264*b1cdbd2cSJim Jagielski 265*b1cdbd2cSJim Jagielski public: 266*b1cdbd2cSJim Jagielski STDMETHOD(Get_XAccChildID)(/*[out,retval]*/ long* childID); 267*b1cdbd2cSJim Jagielski // AccObjectManagerAgent is a management object in UNO, here keep its pointer for 268*b1cdbd2cSJim Jagielski // the implementation of accNavigate when decendant manage happens for List,Tree, or Table 269*b1cdbd2cSJim Jagielski // AccObjectManagerAgent and the following UNO objects XAccessble,XAccessibleSelection, 270*b1cdbd2cSJim Jagielski // XAccessibleAction are all used to operate UNO accessiblility information directly when 271*b1cdbd2cSJim Jagielski // implement some specific MSAA methods,such as accSelection,accNavigate 272*b1cdbd2cSJim Jagielski static AccObjectManagerAgent* g_pAgent; 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski static BOOL get_IAccessibleFromXAccessible(long pXAcc,IAccessible** ppIA); 275*b1cdbd2cSJim Jagielski BOOL m_bRequiresSave; 276*b1cdbd2cSJim Jagielski XGUIDToComObjHash m_containedObjects; 277*b1cdbd2cSJim Jagielski _SmartQI(void * pv,REFIID iid,void ** ppvObject,DWORD)278*b1cdbd2cSJim Jagielski static HRESULT WINAPI _SmartQI(void* pv, 279*b1cdbd2cSJim Jagielski REFIID iid, void** ppvObject, DWORD) 280*b1cdbd2cSJim Jagielski { 281*b1cdbd2cSJim Jagielski return ((CMAccessible*)pv)->SmartQI(pv,iid,ppvObject); 282*b1cdbd2cSJim Jagielski } 283*b1cdbd2cSJim Jagielski 284*b1cdbd2cSJim Jagielski static void get_OLECHARFromAny(Any& pAny, OLECHAR* pChar); 285*b1cdbd2cSJim Jagielski 286*b1cdbd2cSJim Jagielski static void get_OLECHAR4Numbering(const Any& pAny, short numberingLevel, const OUString& numberingPrefix,OLECHAR* pChar); 287*b1cdbd2cSJim Jagielski 288*b1cdbd2cSJim Jagielski // Helper function for data conversion. 289*b1cdbd2cSJim Jagielski static void ConvertAnyToVariant(const ::com::sun::star::uno::Any &rAnyVal, VARIANT *pvData); 290*b1cdbd2cSJim Jagielski }; 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski #endif //__MACCESSIBLE_H_ 295