Question

Les deux:

  • CLSID
  • IID

Après avoir spécifié ce qui précède, et utiliser:

  • CoCreateInstance ()

Pour renvoyer un seul objet non initialisé de la classe spécifiée par le CLSID ci-dessus.

Comment puis-je accéder à la méthode d'une interface à partir de C ++? Sans:

  • ATL
  • MFC
  • Simplement C ++

Ensuite, j'utilise CreateInstance ()

Je ne parviens pas à utiliser CreateInstance () - avec le dernier paramètre - ppv

En utilisant oleview, je peux voir les méthodes de l'IID spécifié ci-dessus, telles que:

interface IS8Simulation : IDispatch {
    HRESULT Open([in] BSTR FileName);
};

Comment puis-je accéder à ce qui précède? Exemples / conseils - s'il vous plaît

Cordialement

Était-ce utile?

La solution

En faisant une CoCreateInstance, vous obtenez un pointeur d’interface. Grâce à la méthode QueryInterface (...), vous pouvez facilement obtenir le pointeur d’interface d’une autre interface. par exemple.,


IUnknown* pUnk = NULL;
HRESULT hr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);

IS8Simulation* pSim = NULL; hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void**)&pSim);

Après cela, vous obtiendrez le pointeur sur IS8Simulation dans pSim et vous pourrez ainsi appeler les méthodes de cette interface. N'oubliez pas que vous devez fournir un identifiant de clé valide dans l'appel CoCreateInstance.

Autres conseils

Le problème actuel est un peu vague. Certains codes seraient utiles. Mais pour deviner, avez-vous besoin de QueryInterface?

 IS8Simulation* pSim = NULL;
 hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void)&pSim);

Je vais essayer ce qui précède, mais IS8 Simulation est déclarée - veuillez excuser mon manque de compréhension COM

De plus, comment appeler la méthode ci-dessous à l'aide de plain C ++ :

HRESULT Open([in] BSTR FileName)

Vous voulez probablement #import " quelquechose.dll " ;. Cela vous donnera des déclarations C ++ pour des types tels que IS8Simulation, similaires à ce que #include " quelquechose.h " ferait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top