xref: /AOO41X/main/winaccessibility/source/UAccCOM/MAccessible.h (revision ffad8df045fe8db79e3e50f731c1fa6ab6501c83)
1*3a700b0aSSteve Yin /**************************************************************
25fdc4257SSteve Yin  *
3*3a700b0aSSteve Yin  * Licensed to the Apache Software Foundation (ASF) under one
4*3a700b0aSSteve Yin  * or more contributor license agreements.  See the NOTICE file
5*3a700b0aSSteve Yin  * distributed with this work for additional information
6*3a700b0aSSteve Yin  * regarding copyright ownership.  The ASF licenses this file
7*3a700b0aSSteve Yin  * to you under the Apache License, Version 2.0 (the
8*3a700b0aSSteve Yin  * "License"); you may not use this file except in compliance
9*3a700b0aSSteve Yin  * with the License.  You may obtain a copy of the License at
105fdc4257SSteve Yin  *
11*3a700b0aSSteve Yin  *   http://www.apache.org/licenses/LICENSE-2.0
125fdc4257SSteve Yin  *
13*3a700b0aSSteve Yin  * Unless required by applicable law or agreed to in writing,
14*3a700b0aSSteve Yin  * software distributed under the License is distributed on an
15*3a700b0aSSteve Yin  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3a700b0aSSteve Yin  * KIND, either express or implied.  See the License for the
17*3a700b0aSSteve Yin  * specific language governing permissions and limitations
18*3a700b0aSSteve Yin  * under the License.
195fdc4257SSteve Yin  *
20*3a700b0aSSteve Yin  *************************************************************/
215fdc4257SSteve Yin 
225fdc4257SSteve Yin #ifndef __MACCESSIBLE_H_
235fdc4257SSteve Yin #define __MACCESSIBLE_H_
245fdc4257SSteve Yin 
255fdc4257SSteve Yin #include <Windows.h>
265fdc4257SSteve Yin #include "resource.h"       // main symbols
275fdc4257SSteve Yin #include <vector>
285fdc4257SSteve Yin #include <map>
295fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessible.hpp>
305fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessibleSelection.hpp>
315fdc4257SSteve Yin #include <com/sun/star/accessibility/XAccessibleAction.hpp>
325fdc4257SSteve Yin #include <AccObjectManagerAgent.hxx>
335fdc4257SSteve Yin #include "EnumVariant.h"
345fdc4257SSteve Yin #ifndef __ACCCOMMON_H_
355fdc4257SSteve Yin #include "acccommon.h"
365fdc4257SSteve Yin #endif
375fdc4257SSteve Yin #ifndef _RTL_USTRING_HXX_
385fdc4257SSteve Yin #include <rtl/ustring.hxx>
395fdc4257SSteve Yin #endif
405fdc4257SSteve Yin 
415fdc4257SSteve Yin #define     CHILDID_SELF        0
425fdc4257SSteve Yin #define     OBJID_WINDOW        ((LONG)0x00000000)
435fdc4257SSteve Yin #define     OBJID_SYSMENU       ((LONG)0xFFFFFFFF)
445fdc4257SSteve Yin #define     OBJID_TITLEBAR      ((LONG)0xFFFFFFFE)
455fdc4257SSteve Yin #define     OBJID_MENU          ((LONG)0xFFFFFFFD)
465fdc4257SSteve Yin #define     OBJID_CLIENT        ((LONG)0xFFFFFFFC)
475fdc4257SSteve Yin #define     OBJID_VSCROLL       ((LONG)0xFFFFFFFB)
485fdc4257SSteve Yin #define     OBJID_HSCROLL       ((LONG)0xFFFFFFFA)
495fdc4257SSteve Yin #define     OBJID_SIZEGRIP      ((LONG)0xFFFFFFF9)
505fdc4257SSteve Yin #define     OBJID_CARET         ((LONG)0xFFFFFFF8)
515fdc4257SSteve Yin #define     OBJID_CURSOR        ((LONG)0xFFFFFFF7)
525fdc4257SSteve Yin #define     OBJID_ALERT         ((LONG)0xFFFFFFF6)
535fdc4257SSteve Yin #define     OBJID_SOUND         ((LONG)0xFFFFFFF5)
545fdc4257SSteve Yin #define     OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4)
555fdc4257SSteve Yin #define     OBJID_NATIVEOM      ((LONG)0xFFFFFFF0)
565fdc4257SSteve Yin 
575fdc4257SSteve Yin using namespace rtl;
585fdc4257SSteve Yin /**
595fdc4257SSteve Yin  *This class implements IMAccessible interface, which inherits from IAccessible2, and
605fdc4257SSteve Yin  *in turn inherits from IAccessible. So its methods include the methods defined only in
615fdc4257SSteve Yin  *IAccessible, plus the methods defined only in IAccessible2, plus the methods defined
625fdc4257SSteve Yin  *only in IMAccessible.
635fdc4257SSteve Yin  */
645fdc4257SSteve Yin class ATL_NO_VTABLE CMAccessible :
655fdc4257SSteve Yin             public CComObjectRoot,
665fdc4257SSteve Yin             public CComCoClass<CMAccessible, &CLSID_MAccessible>,
675fdc4257SSteve Yin             public IDispatchImpl<IMAccessible, &IID_IMAccessible, &LIBID_UACCCOMLib>,
685fdc4257SSteve Yin             public IServiceProvider,
695fdc4257SSteve Yin             public IAccessibleApplication
705fdc4257SSteve Yin {
715fdc4257SSteve Yin     typedef map< const GUID, CComPtr<IUnknown> ,ltComp > XGUIDToComObjHash;
725fdc4257SSteve Yin 
735fdc4257SSteve Yin     typedef HRESULT (WINAPI _UNO_AGGCREATORFUNC)(void*, REFIID, LPVOID*);
745fdc4257SSteve Yin 
755fdc4257SSteve Yin     struct _UNO_AGGMAP_ENTRY
765fdc4257SSteve Yin     {
775fdc4257SSteve Yin         const IID* piid;
785fdc4257SSteve Yin         _UNO_AGGCREATORFUNC* pfnCreateInstance;
795fdc4257SSteve Yin         int XIFIndex;
805fdc4257SSteve Yin     };
815fdc4257SSteve Yin 
825fdc4257SSteve Yin     enum XInterfaceIndex {
835fdc4257SSteve Yin         XI_COMPONENT	= 0x01,
845fdc4257SSteve Yin         XI_TEXT			= 0x02,
855fdc4257SSteve Yin         XI_TABLE		= 0x03,
865fdc4257SSteve Yin         XI_EDITABLETEXT	= 0x04,
875fdc4257SSteve Yin         XI_IMAGE		= 0x05,
885fdc4257SSteve Yin         XI_SELECTION	= 0x06,
895fdc4257SSteve Yin         XI_EXTENDEDCOMP	= 0x07,
905fdc4257SSteve Yin         XI_VALUE		= 0x08,
915fdc4257SSteve Yin         XI_KEYBINDING	= 0x09,
925fdc4257SSteve Yin         XI_ACTION		= 0x0A,
935fdc4257SSteve Yin         XI_HYPERTEXT	= 0x0B,
945fdc4257SSteve Yin         XI_HYPERLINK	= 0x0C,
955fdc4257SSteve Yin         XI_ATTRIBUTE	= 0x0D,
965fdc4257SSteve Yin         XI_NULL			= -1
975fdc4257SSteve Yin     };
985fdc4257SSteve Yin 
995fdc4257SSteve Yin public:
1005fdc4257SSteve Yin     CMAccessible();
1015fdc4257SSteve Yin     virtual ~CMAccessible();
1025fdc4257SSteve Yin     DECLARE_REGISTRY_RESOURCEID(IDR_MACCESSIBLE)
1035fdc4257SSteve Yin 
1045fdc4257SSteve Yin     DECLARE_GET_CONTROLLING_UNKNOWN()
1055fdc4257SSteve Yin 
1065fdc4257SSteve Yin     DECLARE_PROTECT_FINAL_CONSTRUCT()
1075fdc4257SSteve Yin 
1085fdc4257SSteve Yin     BEGIN_COM_MAP(CMAccessible)
1095fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IMAccessible)
1105fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IAccessible)
1115fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IAccessible2)
1125fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IDispatch)
1135fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IAccessibleApplication)
1145fdc4257SSteve Yin     COM_INTERFACE_ENTRY(IServiceProvider)
1155fdc4257SSteve Yin     COM_INTERFACE_ENTRY_FUNC_BLIND(NULL,_SmartQI)
1165fdc4257SSteve Yin     END_COM_MAP()
1175fdc4257SSteve Yin 
1185fdc4257SSteve Yin     // AGGREGATE OBJECT MAP
1195fdc4257SSteve Yin     BEGIN_AGGOBJECT_MAP(CMAccessible)
1205fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleComponent, CLSID_AccComponent, COMPONENT)
1215fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleText, CLSID_AccText, TEXT)
1225fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleEditableText, CLSID_AccEditableText, EDITABLETEXT)
1235fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleImage, CLSID_AccImage, IMAGE)
1245fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleTable, CLSID_AccTable, TABLE)
1255fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleAction, CLSID_AccAction, ACTION)
1265fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleValue, CLSID_AccValue, VALUE)
1275fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleHypertext, CLSID_AccHypertext, HYPERTEXT)
1285fdc4257SSteve Yin     AGGOBJECT_ENTRY(IID_IAccessibleHyperlink, CLSID_AccHyperLink, HYPERLINK)
1295fdc4257SSteve Yin 
1305fdc4257SSteve Yin 
1315fdc4257SSteve Yin     END_AGGOBJECT_MAP()
1325fdc4257SSteve Yin 
1335fdc4257SSteve Yin     // IMAccessible
1345fdc4257SSteve Yin     STDMETHOD(put_accValue)(VARIANT varChild,BSTR szValue);
1355fdc4257SSteve Yin     STDMETHOD(put_accName)(VARIANT varChild,BSTR szName);
1365fdc4257SSteve Yin     STDMETHOD(accDoDefaultAction)(VARIANT varChild);
1375fdc4257SSteve Yin     STDMETHOD(accHitTest)(long xLeft,long yTop,VARIANT *pvarChild);
1385fdc4257SSteve Yin     STDMETHOD(accNavigate)(long navDir,VARIANT varStart,VARIANT *pvarEndUpAt);
1395fdc4257SSteve Yin     STDMETHOD(accLocation)(long *pxLeft,long *pyTop,long *pcxWidth,long *pcyHeight,VARIANT varChild);
1405fdc4257SSteve Yin     STDMETHOD(accSelect)(long flagsSelect,VARIANT varChild);
1415fdc4257SSteve Yin     STDMETHOD(get_accDefaultAction)( VARIANT varChild,BSTR *pszDefaultAction);
1425fdc4257SSteve Yin     STDMETHOD(get_accSelection)(VARIANT *pvarChildren);
1435fdc4257SSteve Yin     STDMETHOD(get_accFocus)(VARIANT *pvarChild);
1445fdc4257SSteve Yin     STDMETHOD(get_accKeyboardShortcut)( VARIANT varChild,BSTR *pszKeyboardShortcut);
1455fdc4257SSteve Yin     STDMETHOD(get_accHelpTopic)(BSTR *pszHelpFile,VARIANT varChild,long *pidTopic);
1465fdc4257SSteve Yin     STDMETHOD(get_accHelp)(VARIANT varChild,BSTR *pszHelp);
1475fdc4257SSteve Yin     STDMETHOD(get_accState)(VARIANT varChild,VARIANT *pvarState);
1485fdc4257SSteve Yin     STDMETHOD(get_accRole)(VARIANT varChild,VARIANT *pvarRole);
1495fdc4257SSteve Yin     STDMETHOD(get_accDescription)(VARIANT varChild,BSTR *pszDescription);
1505fdc4257SSteve Yin     STDMETHOD(get_accValue)( VARIANT varChild,BSTR *pszValue);
1515fdc4257SSteve Yin     STDMETHOD(get_accName)(VARIANT varChild,BSTR *pszName);
1525fdc4257SSteve Yin     STDMETHOD(get_accChild)(VARIANT varChild,IDispatch **ppdispChild);
1535fdc4257SSteve Yin     STDMETHOD(get_accChildCount)(long *pcountChildren);
1545fdc4257SSteve Yin     STDMETHOD(get_accParent)( IDispatch **ppdispParent);
1555fdc4257SSteve Yin 
1565fdc4257SSteve Yin     // methods which are defined only in the IAccessible2
1575fdc4257SSteve Yin     // These methods only declare here, and their implementation bodies are empty now.
1585fdc4257SSteve Yin     STDMETHOD(get_nRelations)( long __RPC_FAR *nRelations) ;
1595fdc4257SSteve Yin     STDMETHOD(get_relation)( long relationIndex, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation) ;
1605fdc4257SSteve Yin     STDMETHOD(get_relations)( long maxRelations, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation, long __RPC_FAR *nRelations) ;
1615fdc4257SSteve Yin     STDMETHOD(role)(long __RPC_FAR *role);
1625fdc4257SSteve Yin     STDMETHOD(get_nActions)(long __RPC_FAR *nActions);
1635fdc4257SSteve Yin     STDMETHOD(scrollTo)(enum IA2ScrollType scrollType);
1645fdc4257SSteve Yin     STDMETHOD(scrollToPoint)(enum IA2CoordinateType coordinateType, long x, long y);
1655fdc4257SSteve Yin     STDMETHOD(get_groupPosition)(long __RPC_FAR *groupLevel,long __RPC_FAR *similarItemsInGroup,long __RPC_FAR *positionInGroup);
1665fdc4257SSteve Yin     STDMETHOD(get_states)( AccessibleStates __RPC_FAR *states );
1675fdc4257SSteve Yin     STDMETHOD(get_extendedRole)( BSTR __RPC_FAR *extendedRole );
1685fdc4257SSteve Yin     STDMETHOD(get_localizedExtendedRole)( BSTR __RPC_FAR *localizedExtendedRole );
1695fdc4257SSteve Yin     STDMETHOD(get_nExtendedStates)( long __RPC_FAR *nExtendedStates);
1705fdc4257SSteve Yin     STDMETHOD(get_extendedStates)( long maxExtendedStates, BSTR __RPC_FAR *__RPC_FAR *extendedStates, long __RPC_FAR *nExtendedStates);
1715fdc4257SSteve Yin     STDMETHOD(get_localizedExtendedStates)(long maxLocalizedExtendedStates,BSTR __RPC_FAR *__RPC_FAR *localizedExtendedStates,long __RPC_FAR *nLocalizedExtendedStates);
1725fdc4257SSteve Yin     STDMETHOD(get_uniqueID)(long __RPC_FAR *uniqueID);
1735fdc4257SSteve Yin     STDMETHOD(get_windowHandle)(HWND __RPC_FAR *windowHandle);
1745fdc4257SSteve Yin     STDMETHOD(get_indexInParent)( long __RPC_FAR *accParentIndex );
1755fdc4257SSteve Yin     STDMETHOD(get_locale)( IA2Locale __RPC_FAR *locale );
1765fdc4257SSteve Yin     STDMETHOD(get_attributes)(/*[out]*/ BSTR *pAttr);
1775fdc4257SSteve Yin 
1785fdc4257SSteve Yin     //IServiceProvider.
1795fdc4257SSteve Yin     STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void** ppvObject);
1805fdc4257SSteve Yin 
1815fdc4257SSteve Yin     //IAccessibleApplication
1825fdc4257SSteve Yin     STDMETHOD(get_appName)(BSTR __RPC_FAR *name);
1835fdc4257SSteve Yin     STDMETHOD(get_appVersion)(BSTR __RPC_FAR *version);
1845fdc4257SSteve Yin     STDMETHOD(get_toolkitName)(BSTR __RPC_FAR *name);
1855fdc4257SSteve Yin     STDMETHOD(get_toolkitVersion)(BSTR __RPC_FAR *version);
1865fdc4257SSteve Yin 
1875fdc4257SSteve Yin     // methods which are defined only in IMAccessible
1885fdc4257SSteve Yin     // These methods are provided for UNO management system.
1895fdc4257SSteve Yin     // The UNO management system use these methods to put Accessibility
1905fdc4257SSteve Yin     // information to COM.
1915fdc4257SSteve Yin     STDMETHOD(Put_XAccName)(const OLECHAR __RPC_FAR *pszName);
1925fdc4257SSteve Yin     STDMETHOD(Put_XAccRole)(unsigned short pRole);
1935fdc4257SSteve Yin     STDMETHOD(DecreaseState)(DWORD pXSate);
1945fdc4257SSteve Yin     STDMETHOD(IncreaseState)(DWORD pXSate);
1955fdc4257SSteve Yin     STDMETHOD(SetState)(DWORD pXSate);
1965fdc4257SSteve Yin     STDMETHOD(Put_XAccDescription)(const OLECHAR __RPC_FAR *pszDescription);
1975fdc4257SSteve Yin     STDMETHOD(Put_XAccValue)(const OLECHAR __RPC_FAR *pszAccValue);
1985fdc4257SSteve Yin     STDMETHOD(Put_XAccLocation)(const Location sLocation);
1995fdc4257SSteve Yin     STDMETHOD(Put_XAccFocus)(long dChildID);
2005fdc4257SSteve Yin     STDMETHOD(Put_XAccParent)(IMAccessible __RPC_FAR *pIParent);
2015fdc4257SSteve Yin     STDMETHOD(Put_XAccWindowHandle)(HWND hwnd);
2025fdc4257SSteve Yin     STDMETHOD(Put_XAccChildID)(long dChildID);
2035fdc4257SSteve Yin     STDMETHOD(Put_XAccAgent)(long pAgent);
2045fdc4257SSteve Yin     STDMETHOD(NotifyDestroy)(BOOL isDestroy);
2055fdc4257SSteve Yin     STDMETHOD(Put_ActionDescription)( const OLECHAR* szAction);
2065fdc4257SSteve Yin     STDMETHOD(SetDefaultAction)(long pAction);
2075fdc4257SSteve Yin     STDMETHOD(GetUNOInterface)(long*);
2085fdc4257SSteve Yin     STDMETHOD(SetXAccessible)(long);
2095fdc4257SSteve Yin 
2105fdc4257SSteve Yin private:
2115fdc4257SSteve Yin     OLECHAR* m_pszName;
2125fdc4257SSteve Yin     OLECHAR* m_pszValue;
2135fdc4257SSteve Yin     OLECHAR* m_pszActionDescription;
2145fdc4257SSteve Yin     unsigned short m_iRole;
2155fdc4257SSteve Yin     DWORD	m_dState;
2165fdc4257SSteve Yin     OLECHAR* m_pszDescription;
2175fdc4257SSteve Yin     IMAccessible* m_pIParent;
2185fdc4257SSteve Yin     Location m_sLocation;
2195fdc4257SSteve Yin 
2205fdc4257SSteve Yin     // identify a COM object/Acc object uniquely
2215fdc4257SSteve Yin     long m_dChildID;
2225fdc4257SSteve Yin     // specify the focus child ID in object self and its direct children
2235fdc4257SSteve Yin 
2245fdc4257SSteve Yin     long m_dFocusChildID;
2255fdc4257SSteve Yin     // parent window handle,will be used in the future application, its value comes from UNO
2265fdc4257SSteve Yin 
2275fdc4257SSteve Yin     HWND m_hwnd;
2285fdc4257SSteve Yin 
2295fdc4257SSteve Yin     // the COM class which implements IEnumVARIANT interface,currently only used in
2305fdc4257SSteve Yin     // the implementation of get_accSelection
2315fdc4257SSteve Yin     CEnumVariant* m_pEnumVar;
2325fdc4257SSteve Yin 
2335fdc4257SSteve Yin     // specify if the XAccessible is invalid
2345fdc4257SSteve Yin     BOOL m_isDestroy;
2355fdc4257SSteve Yin 
2365fdc4257SSteve Yin     XAccessible*  pUNOInterface;
2375fdc4257SSteve Yin     Reference< XAccessible > pRef;
2385fdc4257SSteve Yin     XAccessible*  pAchorUNOInterface;
2395fdc4257SSteve Yin     XAccessibleAction*    m_pXAction;
2405fdc4257SSteve Yin     XAccessibleContext*  pRContextInterface;
2415fdc4257SSteve Yin     Reference<XAccessibleContext> pRContext;
2425fdc4257SSteve Yin 
2435fdc4257SSteve Yin private:
2445fdc4257SSteve Yin 
2455fdc4257SSteve Yin     // the helper methods in order to implement the above public methods
2465fdc4257SSteve Yin     IMAccessible* GetChildInterface(long dChildIndex);//notice here the parameter is child index,not child id
2475fdc4257SSteve Yin     IMAccessible* GetNavigateChildForDM(VARIANT varCur,short flags);//for decendant manage
2485fdc4257SSteve Yin     HRESULT GetFirstChild(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation
2495fdc4257SSteve Yin     HRESULT GetLastChild(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation
2505fdc4257SSteve Yin     HRESULT GetNextSibling(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation
2515fdc4257SSteve Yin     HRESULT GetPreSibling(VARIANT varStart,VARIANT* pvarEndUpAt);//for accNavigate implementation
2525fdc4257SSteve Yin     BOOL IsDecendantManage();//identify whether the current COM belongs to manage_decendant roles
2535fdc4257SSteve Yin 
2545fdc4257SSteve Yin     // the following private methods are used to implement accSelect method
2555fdc4257SSteve Yin     HRESULT SelectChild(XAccessible* pItem);
2565fdc4257SSteve Yin     HRESULT DeSelectChild(XAccessible* pItem);
2575fdc4257SSteve Yin     HRESULT	SelectMutipleChidren( XAccessible** pItem,int size );
2585fdc4257SSteve Yin     HRESULT DeSelectMutipleChildren( XAccessible** pItem,int size );
2595fdc4257SSteve Yin     XAccessibleContext* GetContextByXAcc( XAccessible* pXAcc );
2605fdc4257SSteve Yin     Reference< XAccessibleSelection > GetSelection();
2615fdc4257SSteve Yin     // end accSelect implementation methods
2625fdc4257SSteve Yin     BOOL GetXInterfaceFromXAccessible(XAccessible*, XInterface**, int);
2635fdc4257SSteve Yin     HRESULT WINAPI SmartQI(void* pv, REFIID iid, void** ppvObject);
2645fdc4257SSteve Yin 
2655fdc4257SSteve Yin public:
2665fdc4257SSteve Yin     STDMETHOD(Get_XAccChildID)(/*[out,retval]*/ long* childID);
2675fdc4257SSteve Yin     // AccObjectManagerAgent is a management object in UNO, here keep its pointer for
2685fdc4257SSteve Yin     // the implementation of accNavigate when decendant manage happens for List,Tree, or Table
2695fdc4257SSteve Yin     // AccObjectManagerAgent and the following UNO objects XAccessble,XAccessibleSelection,
2705fdc4257SSteve Yin     // XAccessibleAction are all used to operate UNO accessiblility information directly when
2715fdc4257SSteve Yin     // implement some specific MSAA methods,such as accSelection,accNavigate
2725fdc4257SSteve Yin     static AccObjectManagerAgent* g_pAgent;
2735fdc4257SSteve Yin 
2745fdc4257SSteve Yin     static BOOL get_IAccessibleFromXAccessible(long pXAcc,IAccessible** ppIA);
2755fdc4257SSteve Yin     BOOL m_bRequiresSave;
2765fdc4257SSteve Yin     XGUIDToComObjHash m_containedObjects;
2775fdc4257SSteve Yin 
_SmartQI(void * pv,REFIID iid,void ** ppvObject,DWORD)2785fdc4257SSteve Yin     static HRESULT WINAPI _SmartQI(void* pv,
2795fdc4257SSteve Yin                                    REFIID iid, void** ppvObject, DWORD)
2805fdc4257SSteve Yin     {
2815fdc4257SSteve Yin         return ((CMAccessible*)pv)->SmartQI(pv,iid,ppvObject);
2825fdc4257SSteve Yin     }
2835fdc4257SSteve Yin 
2845fdc4257SSteve Yin     static void get_OLECHARFromAny(Any& pAny, OLECHAR* pChar);
2855fdc4257SSteve Yin 
2865fdc4257SSteve Yin     static void get_OLECHAR4Numbering(const Any& pAny, short numberingLevel, const OUString& numberingPrefix,OLECHAR* pChar);
2875fdc4257SSteve Yin 
2885fdc4257SSteve Yin     // Helper function for data conversion.
2895fdc4257SSteve Yin     static void ConvertAnyToVariant(const ::com::sun::star::uno::Any &rAnyVal, VARIANT *pvData);
2905fdc4257SSteve Yin };
2915fdc4257SSteve Yin 
2925fdc4257SSteve Yin 
2935fdc4257SSteve Yin 
2945fdc4257SSteve Yin #endif //__MACCESSIBLE_H_
295