You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
3.8 KiB
142 lines
3.8 KiB
//
|
|
// candacc.h
|
|
// = accessibility support in candidate ui =
|
|
//
|
|
|
|
#ifndef CANDACC_H
|
|
#define CANDACC_H
|
|
|
|
#include <windows.h>
|
|
#include <winable.h>
|
|
#include <ole2.h>
|
|
#include <oleacc.h>
|
|
|
|
|
|
#define CANDACCITEM_MAX 16 /* REVIEW: KOJIW: enough? */
|
|
|
|
class CCandAccessible;
|
|
|
|
//
|
|
// CCandAccItem
|
|
//
|
|
|
|
class CCandAccItem
|
|
{
|
|
public:
|
|
CCandAccItem( void );
|
|
virtual ~CCandAccItem( void );
|
|
|
|
void Init( CCandAccessible *pCandAcc, int iItemID );
|
|
int GetID( void );
|
|
|
|
virtual BSTR GetAccName( void );
|
|
virtual BSTR GetAccValue( void );
|
|
virtual LONG GetAccRole( void );
|
|
virtual LONG GetAccState( void );
|
|
virtual void GetAccLocation( RECT *prc );
|
|
|
|
protected:
|
|
void NotifyWinEvent( DWORD dwEvent );
|
|
|
|
private:
|
|
CCandAccessible *m_pCandAcc;
|
|
int m_iItemID;
|
|
};
|
|
|
|
|
|
//
|
|
// CCandAccessible
|
|
//
|
|
|
|
class CCandAccessible : public IAccessible
|
|
{
|
|
public:
|
|
CCandAccessible( CCandAccItem *pAccItemSelf );
|
|
virtual ~CCandAccessible( void );
|
|
|
|
//
|
|
// IUnknown methods
|
|
//
|
|
STDMETHODIMP QueryInterface( REFIID riid, void** ppv );
|
|
STDMETHODIMP_(ULONG) AddRef( void );
|
|
STDMETHODIMP_(ULONG) Release( void );
|
|
|
|
//
|
|
// IDispatch methods
|
|
//
|
|
STDMETHODIMP GetTypeInfoCount( UINT* pctinfo );
|
|
STDMETHODIMP GetTypeInfo( UINT itinfo, LCID lcid, ITypeInfo** pptinfo );
|
|
STDMETHODIMP GetIDsOfNames( REFIID riid, OLECHAR** rgszNames, UINT cNames, LCID lcid, DISPID* rgdispid );
|
|
STDMETHODIMP Invoke( DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo, UINT* puArgErr );
|
|
|
|
//
|
|
// IAccessible methods
|
|
//
|
|
STDMETHODIMP get_accParent( IDispatch ** ppdispParent );
|
|
STDMETHODIMP get_accChildCount( long* pChildCount );
|
|
STDMETHODIMP get_accChild( VARIANT varChild, IDispatch ** ppdispChild );
|
|
STDMETHODIMP get_accName( VARIANT varChild, BSTR* pszName );
|
|
STDMETHODIMP get_accValue( VARIANT varChild, BSTR* pszValue );
|
|
STDMETHODIMP get_accDescription( VARIANT varChild, BSTR* pszDescription );
|
|
STDMETHODIMP get_accRole( VARIANT varChild, VARIANT *pvarRole );
|
|
STDMETHODIMP get_accState( VARIANT varChild, VARIANT *pvarState );
|
|
STDMETHODIMP get_accHelp( VARIANT varChild, BSTR* pszHelp );
|
|
STDMETHODIMP get_accHelpTopic( BSTR* pszHelpFile, VARIANT varChild, long* pidTopic );
|
|
STDMETHODIMP get_accKeyboardShortcut( VARIANT varChild, BSTR* pszKeyboardShortcut );
|
|
STDMETHODIMP get_accFocus( VARIANT * pvarFocusChild );
|
|
STDMETHODIMP get_accSelection( VARIANT * pvarSelectedChildren );
|
|
STDMETHODIMP get_accDefaultAction( VARIANT varChild, BSTR* pszDefaultAction );
|
|
STDMETHODIMP accSelect( long flagsSel, VARIANT varChild );
|
|
STDMETHODIMP accLocation( long* pxLt, long* pyTp, long* pcxWd, long* pcyHt, VARIANT varChild );
|
|
STDMETHODIMP accNavigate( long navDir, VARIANT varStart, VARIANT * pVarEndUpAt );
|
|
STDMETHODIMP accHitTest( long xLeft, long yTop, VARIANT * pvarChildAtPoint );
|
|
STDMETHODIMP accDoDefaultAction( VARIANT varChild );
|
|
STDMETHODIMP put_accName( VARIANT varChild, BSTR szName );
|
|
STDMETHODIMP put_accValue( VARIANT varChild, BSTR pszValue );
|
|
|
|
//
|
|
//
|
|
//
|
|
void SetWindow( HWND hWnd );
|
|
HRESULT Initialize( void );
|
|
void NotifyWinEvent( DWORD dwEvent, CCandAccItem *pAccItem );
|
|
|
|
LRESULT CreateRefToAccObj( WPARAM wParam );
|
|
|
|
//
|
|
//
|
|
//
|
|
|
|
void ClearAccItem( void );
|
|
BOOL AddAccItem( CCandAccItem *pAccItem );
|
|
|
|
//
|
|
//
|
|
//
|
|
__inline BOOL FInitialized( void )
|
|
{
|
|
return m_fInitialized;
|
|
}
|
|
|
|
protected:
|
|
LONG m_cRef;
|
|
HWND m_hWnd;
|
|
IAccessible *m_pDefAccClient;
|
|
ITypeInfo *m_pTypeInfo;
|
|
|
|
BOOL m_fInitialized;
|
|
int m_nAccItem;
|
|
CCandAccItem *m_rgAccItem[ CANDACCITEM_MAX ];
|
|
|
|
|
|
BOOL IsValidChildVariant( VARIANT * pVar );
|
|
CCandAccItem *AccItemFromID( int iID );
|
|
};
|
|
|
|
|
|
|
|
extern void InitCandAcc( void );
|
|
extern void DoneCandAcc( void );
|
|
|
|
#endif /* CANDACC_H */
|
|
|