Quelle est la difference et le role des Dispinterfaces et de IDispatch dans la manipulation d'objets COM ?
Quelle est la difference et le role des Dispinterfaces et de IDispatch dans la manipulation d'objets COM ?
Une interface dérivant de IDispatch est une dispinterface.
IDispatch dispose d'une methode Invoke qui permet d'appeler d'autres fonctions selon la valeur de l'argument qui lui est transmis (le dispID).
Lorsque l'on definit les interface disponible d'un objet COM avec le langage de defininition d'interface (IDL) on note les lignes :
ce qui montre que l'interface IIMage derive de IDispatch et que si j'utilise la methode Invoke avec le dispId=1 en fait je vais appeler la propriété BitsPerPixel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 interface IImage : IDispatch { [propget, id(1), helpstring("property BitsPerPixel")] HRESULT BitsPerPixel([out, retval] long *pVal);
Enfin pour obtenir la valeur des DispID correspondant aux fonctions mises en oeuvre dans une interface IDispatch. Il y a la methode GetIDsOfNames qui permet d'avoir la correspondance nom de fonction et dispID
Ok MErci !
m'aide bien. Je vais voir dans ce sens la.
Partager