ActiveX : notes
En visual Basic, pour avoir un pointeur sur l'interface :
Dim MyIP As Object
Set MuIP = CreateObject("MyApp.MyClass.1")
Ce qui est fait réellement et qu'on doit effectuer en C++ :
- (VB) Creation d'une variable de type Object "MyIP"
- (VB) Recherche MyApp.MyClass.1 dans le registre. Si trouvé,
alors est extrait la valeur du CLSID.
- (VB) Appel à CoCreateInstance avec le CLSID du
dessus.
- (COM) appel à CoGetClassObject avec le CLSID et
l'IID (pour l'interface IDispatch). Ceci, si succès,
fait que l'exécutable ou la DLL est chargé en mémoire
et lancée.
- (Object) appel à CoRegisterClassObject qui dit
à COM que la classe est dispo.
- (COM) appelle IClassFactory::CreateInstance avec l'IID.
Si succès, un pointeur sur l'objet créé par IDispatch.
- (COM) appelle IClassFactory::Release pour libérer
le pointeur sur l'objet de l'interface IClassFactory
- (VB) Stocke le pointeur d'interface IDispatch dans
MyIP.