Interfaces doubles : IAccessible et IDispatch
Les développeurs de serveurs doivent fournir l’interface COM (Component Object Model) standard IDispatch pour leurs objets accessibles. l’interface IDispatch permet aux applications clientes écrites dans Microsoft Visual Basic et divers langages de script d’utiliser les méthodes et propriétés exposées par IAccessible. Étant donné qu’un objet accessible fournit l’accès à un objet indirectement par le biais de IDispatch :: Invoke ou directement à IAccessible, il est dit d’avoir une interface double.
Lorsque les clients C/C++ récupèrent un pointeur d’interface IDispatch, les clients peuvent appeler QueryInterface pour essayer de convertir le pointeur d’interface IDispatch en un pointeur d’interface IAccessible . Pour appeler les méthodes IAccessible indirectement, les clients C/C++ appellent IDispatch :: Invoke. Pour améliorer les performances, appelez les méthodes IAccessible pour utiliser directement l’objet.
Pour obtenir la liste des ID de dispatch (DISPID) que IDispatch utilise pour identifier les méthodes et propriétés IAccessible , consultez annexe C : IAccessible DISPID.
Notes
Sous la version 2,0 et les versions ultérieures de Microsoft Active Accessibility, les serveurs n’ont pas à implémenter entièrement les méthodes de IDispatch , mais ils peuvent simplement retourner E _ NOTIMPL après l’initialisation des paramètres out, comme illustré dans l’exemple suivant.
HRESULT STDMETHODCALLTYPE AccServer::GetTypeInfoCount(UINT* pctinfo)
{
*pctinfo = 0;
return E_NOTIMPL;
};