Domanda

Entrambi:

  • CLSID
  • IID

Dopo aver specificato quanto sopra e utilizzando:

  • CoCreateInstance ()

Per restituire un singolo oggetto non inizializzato della classe specificata dal CLSID sopra.

Come posso quindi accedere al metodo di un'interfaccia da C ++? Senza:

  • ATL
  • MFC
  • Semplicemente C ++

Successivamente, utilizzo CreateInstance ()

Sto riscontrando problemi, usando CreateInstance () - con l'ultimo parametro - ppv

Usando oleview, posso vedere i metodi dell'IID specificato sopra IID sopra, come ad esempio:

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

Come posso accedere a quanto sopra? Esempi / indicazioni - per favore

Saluti

È stato utile?

Soluzione

Eseguendo un CoCreateInstance si ottiene un puntatore all'interfaccia. Tramite il metodo QueryInterface (...) è possibile ottenere facilmente il puntatore all'interfaccia di un'altra interfaccia. per esempio.,


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

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

Dopo aver fatto questo, otterrai il puntatore a IS8Simulation in pSim e attraverso questo puoi chiamare i metodi di quella interfaccia. Ricorda che devi fornire un clsid valido nella chiamata CoCreateInstance.

Altri suggerimenti

È un po 'vago quale sia il vero problema. Qualche codice sarebbe utile. Ma per indovinare, hai bisogno di QueryInterface?

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

Proverò quanto sopra, ma dove viene dichiarata la IS8Simulation - si prega di scusare la mia mancanza di COM comprensione

Inoltre, come chiamare il metodo, di seguito usando C ++ semplice :

HRESULT Open([in] BSTR FileName)

Probabilmente vuoi #import " something.dll " ;. Questo ti darà dichiarazioni C ++ per tipi come IS8Simulation, simile a ciò che #include "qualcosa.h". farebbe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top