Pregunta

No estoy familiarizado con esto y puedo usar un inicio rápido.

Estoy usando el control de usuario ATL (C ++ no administrado) y me gustaría usar el objeto ShockWave ActiveX. Necesito saber cómo declararlo para poder establecer una propiedad o llamar a un método.

Por ejemplo, si pudiera asignarle una variable, me gustaría llamar a 'variable - > LoadMovie ()'

Sé que esto es súper ridículo ... casi avergonzado de preguntarlo aquí. ;) (casi)

¿Fue útil?

Solución

Si #importa el dll (que recomiendo cuando trabaje con COM porque hace su vida MUCHO más fácil), puede usar un puntero inteligente emparejado con el CLSID del objeto. Recuerde que las clases de puntero inteligente tienen el 'Ptr' posterior al arreglo después del nombre de la interfaz.

Por ejemplo:

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

Espero que eso ayude.

EDITAR: Si desea verificar el HRESULT de la asignación, puede hacer lo siguiente:

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

Otros consejos

Corté & amp; pegué el código necesario tantas veces que no recuerdo la sintaxis exacta pero tienes que:

obtener un CComPtr < > de la interfaz correcta, CreateInstance el objeto QueryInterface para obtener la interfaz que desea (suponiendo que no esté utilizando CComPtr)

luego llame a métodos en él.

Alternativamente, puede # importar el dll, luego el compilador generará una clase c ++ con todos los métodos y propiedades para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top