服务器开发人员必须为其可访问的对象提供标准组件对象模型(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 DISPID。
注意
在 Microsoft Active Accessibility 版本 2.0 及更高版本下,服务器不必完全实现 IDispatch 的方法,但只需在初始化任何输出参数后返回E_NOTIMPL,如以下示例所示。
HRESULT STDMETHODCALLTYPE AccServer::GetTypeInfoCount(UINT* pctinfo)
{
*pctinfo = 0;
return E_NOTIMPL;
};