Domanda

Non ne ho familiarità e posso usare un calcio d'inizio.

Sto usando il controllo utente ATL (non gestito C ++) e vorrei usare l'oggetto ActiveX ShockWave. Devo sapere come dichiararlo in modo da poter impostare una proprietà o chiamare un metodo.

Ad esempio, se potessi assegnare una variabile ad essa, allora vorrei chiamare 'variabile - > LoadMovie ()'

So che è super ridicolo ... quasi imbarazzato chiederlo qui. ;) (quasi)

È stato utile?

Soluzione

Se #importi la dll (che raccomando quando lavori con COM perché ti semplifica la vita), puoi usare un puntatore intelligente associato al CLSID dell'oggetto. Ricorda che le classi di puntatori intelligenti hanno il 'Ptr' dopo la correzione dopo il nome dell'interfaccia.

Ad esempio:

ISomeInterfacePtr pSomeInterface( CLSID_SomeComponent );
HRESULT hr = pSomeInterface->SomeMethod();

Spero che sia d'aiuto.

MODIFICA: Se si desidera verificare il RISULTATO dell'allocazione, è possibile effettuare le seguenti operazioni:

ISomeInterfacePtr pSomeInterface = 0;
HRESULT hr = pSomeInterface.CreateInstance( CLSID_SomeComponent );

Altri suggerimenti

Ho tagliato & amp; incolla il codice necessario così tante volte che non ricordo l'esatta sintassi ma devi:

ottieni un CComPtr < > dell'interfaccia corretta, CreateInstance l'oggetto QueryInterface per ottenere l'interfaccia desiderata (supponendo che non si stia utilizzando CComPtr)

quindi chiama i metodi su di esso.

In alternativa puoi #importare la dll, quindi il compilatore genererà una classe c ++ con tutti i metodi e le proprietà per te.

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