138 lines
5.3 KiB
C++
138 lines
5.3 KiB
C++
// --------------------------------------------------------------------------
|
|
//
|
|
// DEFAULT.H
|
|
//
|
|
// Standard OLE accessible object class
|
|
//
|
|
// --------------------------------------------------------------------------
|
|
|
|
|
|
class CAccessible :
|
|
public IAccessible,
|
|
public IEnumVARIANT,
|
|
public IOleWindow,
|
|
public IServiceProvider,
|
|
public IAccIdentity
|
|
{
|
|
public:
|
|
|
|
//
|
|
// Ctor, Dtor
|
|
//
|
|
|
|
CAccessible( CLASS_ENUM eclass );
|
|
|
|
// Virtual dtor ensures that dtors of derived classes
|
|
// are called correctly when objects are deleted
|
|
virtual ~CAccessible();
|
|
|
|
|
|
//
|
|
// IUnknown
|
|
//
|
|
|
|
virtual STDMETHODIMP QueryInterface(REFIID riid, void** ppv);
|
|
virtual STDMETHODIMP_(ULONG) AddRef();
|
|
virtual STDMETHODIMP_(ULONG) Release();
|
|
|
|
//
|
|
// IDispatch
|
|
//
|
|
|
|
virtual STDMETHODIMP GetTypeInfoCount(UINT* pctinfo);
|
|
virtual STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo);
|
|
virtual STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR** rgszNames, UINT cNames,
|
|
LCID lcid, DISPID* rgdispid);
|
|
virtual STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
|
|
DISPPARAMS* pdispparams, VARIANT* pvarResult,
|
|
EXCEPINFO* pexcepinfo, UINT* puArgErr);
|
|
|
|
//
|
|
// IAccessible
|
|
//
|
|
|
|
virtual STDMETHODIMP get_accParent(IDispatch ** ppdispParent);
|
|
virtual STDMETHODIMP get_accChildCount(long* pChildCount);
|
|
virtual STDMETHODIMP get_accChild(VARIANT varChild, IDispatch ** ppdispChild);
|
|
|
|
virtual STDMETHODIMP get_accName(VARIANT varChild, BSTR* pszName) = 0;
|
|
virtual STDMETHODIMP get_accValue(VARIANT varChild, BSTR* pszValue);
|
|
virtual STDMETHODIMP get_accDescription(VARIANT varChild, BSTR* pszDescription);
|
|
virtual STDMETHODIMP get_accRole(VARIANT varChild, VARIANT *pvarRole) = 0;
|
|
virtual STDMETHODIMP get_accState(VARIANT varChild, VARIANT *pvarState) = 0;
|
|
virtual STDMETHODIMP get_accHelp(VARIANT varChild, BSTR* pszHelp);
|
|
virtual STDMETHODIMP get_accHelpTopic(BSTR* pszHelpFile, VARIANT varChild, long* pidTopic);
|
|
virtual STDMETHODIMP get_accKeyboardShortcut(VARIANT varChild, BSTR* pszKeyboardShortcut);
|
|
virtual STDMETHODIMP get_accFocus(VARIANT * pvarFocusChild);
|
|
virtual STDMETHODIMP get_accSelection(VARIANT * pvarSelectedChildren);
|
|
virtual STDMETHODIMP get_accDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
|
|
|
|
virtual STDMETHODIMP accSelect(long flagsSel, VARIANT varChild);
|
|
virtual STDMETHODIMP accLocation(long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight, VARIANT varChild) = 0;
|
|
virtual STDMETHODIMP accNavigate(long navDir, VARIANT varStart, VARIANT * pvarEndUpAt);
|
|
virtual STDMETHODIMP accHitTest(long xLeft, long yTop, VARIANT * pvarChildAtPoint) = 0;
|
|
virtual STDMETHODIMP accDoDefaultAction(VARIANT varChild);
|
|
|
|
virtual STDMETHODIMP put_accName(VARIANT varChild, BSTR szName);
|
|
virtual STDMETHODIMP put_accValue(VARIANT varChild, BSTR pszValue);
|
|
|
|
|
|
//
|
|
// IEnumVARIANT
|
|
//
|
|
|
|
virtual STDMETHODIMP Next(ULONG celt, VARIANT* rgvar, ULONG * pceltFetched);
|
|
virtual STDMETHODIMP Skip(ULONG celt);
|
|
virtual STDMETHODIMP Reset(void);
|
|
virtual STDMETHODIMP Clone(IEnumVARIANT ** ppenum) = 0;
|
|
|
|
|
|
//
|
|
// IOleWindow
|
|
//
|
|
|
|
virtual STDMETHODIMP GetWindow(HWND* phwnd);
|
|
virtual STDMETHODIMP ContextSensitiveHelp(BOOL fEnterMode);
|
|
|
|
|
|
//
|
|
// IServiceProvider
|
|
//
|
|
|
|
virtual STDMETHODIMP QueryService( REFGUID guidService, REFIID riid, void **ppv );
|
|
|
|
|
|
//
|
|
// IAccIdentity
|
|
//
|
|
|
|
virtual STDMETHODIMP GetIdentityString ( DWORD dwIDChild,
|
|
BYTE ** ppIDString,
|
|
DWORD * pdwIDStringLen );
|
|
|
|
|
|
//
|
|
// CAccessible
|
|
//
|
|
|
|
virtual void SetupChildren();
|
|
virtual BOOL ValidateChild(VARIANT*);
|
|
|
|
protected:
|
|
|
|
HWND m_hwnd;
|
|
ULONG m_cRef;
|
|
long m_cChildren; // Count of index-based children
|
|
long m_idChildCur; // ID of current child in enum (may be index or hwnd based)
|
|
|
|
private:
|
|
|
|
// TODO - make the typeinfo a global (static), so we don't init it for each and every object.
|
|
// - have to be careful, since we'd need one per thread.
|
|
ITypeInfo* m_pTypeInfo; // TypeInfo for IDispatch junk
|
|
CLASSINFO * m_pClassInfo; // ptr to this object's class info - may be NULL in some cases.
|
|
|
|
HRESULT InitTypeInfo();
|
|
void TermTypeInfo();
|
|
};
|