Question

Je ne suis pas au courant de cela et je peux utiliser un coup de pouce.

J'utilise le contrôle utilisateur ATL (C ++ non géré) et souhaite utiliser l'objet ActiveX ShockWave. J'ai besoin de savoir comment le déclarer pour pouvoir définir une propriété ou appeler une méthode.

Par exemple, si je pouvais lui affecter une variable, je voudrais appeler "variable - > LoadMovie ()"

Je sais que c'est super ridicule ... presque gêné de le demander ici. ;) (presque)

Était-ce utile?

La solution

Si vous importez la dll (ce que je recommande lorsque vous travaillez avec COM car cela vous simplifie tellement la vie), vous pouvez utiliser un pointeur intelligent associé au CLSID de l'objet. Rappelez-vous que les classes de pointeurs intelligents ont le post-correctif 'Ptr' après le nom de l'interface.

Par exemple:

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

L’espoir que cela aide.

MODIFIER: si vous souhaitez vérifier le HRESULT de l'allocation, procédez comme suit:

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

Autres conseils

J'ai coupé & et collé le code nécessaire si souvent que je ne me souviens plus de la syntaxe exacte, mais vous devez:

obtenir un CComPtr < > de la bonne interface, CreateInstance l'objet QueryInterface pour obtenir l'interface souhaitée (en supposant que vous n'utilisez pas CComPtr)

puis appelez les méthodes dessus.

Vous pouvez également importer la dll, puis le compilateur générera une classe c ++ avec toutes les méthodes et propriétés pour vous.

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