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 en Microsoft Visual Basic et dans différents 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 soit indirectement via IDispatch::Invoke , soit directement avec IAccessible, il est dit avoir une double interface.

Lorsque les clients C/C++ obtiennent un pointeur d’interface IDispatch, les clients peuvent appeler QueryInterface pour essayer de convertir le pointeur d’interface IDispatch en pointeur d’interface IAccessible . Pour appeler indirectement les méthodes IAccessible , les clients C/C++ appellent IDispatch::Invoke. Pour améliorer les performances, appelez les méthodes IAccessible pour utiliser l’objet directement.

Pour obtenir la liste des ID de répartition (DISPID) que IDispatch utilise pour identifier les méthodes et propriétés IAccessibles , consultez Annexe C : DISPIDs IAccessibles.

Notes

Sous les versions 2.0 et ultérieures de Microsoft Active Accessibility, les serveurs n’ont pas besoin d’implémenter entièrement les méthodes d’IDispatch , mais peuvent simplement retourner E_NOTIMPL après l’initialisation des paramètres de sortie, comme illustré dans l’exemple suivant.

 

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