Udostępnij przez


Podwójne interfejsy: IAccessible i IDispatch

Deweloperzy serwerów muszą zapewnić standardowy interfejs modelu obiektów składników (COM) IDispatch dla ich dostępnych obiektów. Interfejs IDispatch umożliwia aplikacjom klienckim napisanym w języku Microsoft Visual Basic i różnym językach skryptów używanie metod i właściwości udostępnianych przez IAccessible. Ponieważ obiekt dostępny zapewnia dostęp do obiektu pośrednio za pośrednictwem IDispatch::Invoke lub bezpośrednio z IAccessible, mówi się, że ma podwójny interfejs.

Gdy klienci języka C/C++ otrzymują wskaźnik interfejsu IDispatch, klienci mogą wywoływać QueryInterface, aby spróbować przekonwertować wskaźnik interfejsu IDispatch na wskaźnik interfejsu IDispatch IAccessible. Aby wywołać metody IAccessible pośrednio, klienci języka C/C++ wywołają metodę IDispatch::Invoke. Aby uzyskać lepszą wydajność, wywołaj metody IAccessible, aby użyć obiektu bezpośrednio.

Aby uzyskać listę identyfikatorów wysyłki (DISPID), które IDispatch używa do identyfikowania IAccessible metod i właściwości, zobacz Dodatek C: IAccessible DISPIDs.

Nuta

W wersji 2.0 lub nowszej usługi Microsoft Active Accessibility serwery nie muszą w pełni implementować metod IDispatch, ale mogą po prostu zwrócić E_NOTIMPL po zainicjowaniu wszystkich parametrów out, jak pokazano w poniższym przykładzie.

 

HRESULT STDMETHODCALLTYPE AccServer::GetTypeInfoCount(UINT* pctinfo)
{
    *pctinfo = 0;
    return E_NOTIMPL;
};