双接口:IAccessible 和 IDispatch

服务器开发人员必须为可访问对象提供标准组件对象模型 (COM) 接口 IDispatch 。 IDispatch 接口允许以 Microsoft Visual Basic 和各种脚本语言编写的客户端应用程序使用 IAccessible 公开的方法和属性。 由于可访问对象通过 IDispatch::Invoke 间接或通过 IAccessible 直接提供对对象的访问,因此据说该对象具有双重接口。

当 C/C++ 客户端取回 IDispatch 接口指针时,客户端可以调用 QueryInterface 来尝试将 IDispatch 接口指针转换为 IAccessible 接口指针。 若要间接调用 IAccessible 方法,C/C++ 客户端调用 IDispatch::Invoke。 为了提高性能,请调用 IAccessible 方法以直接使用 对象。

有关 IDispatch 用于标识 IAccessible 方法和属性的调度 ID (DISPID) 的列表,请参阅 附录 C:IAccessible DISPIDs

注意

在 2.0 版及更高版本的 Microsoft Active Accessibility 下,服务器不必完全实现 IDispatch 的方法,但只需在初始化任何 out 参数后返回E_NOTIMPL,如以下示例所示。

 

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