Pergunta

Eu não estou familiarizado com isso, e pode usar um pontapé inicial.

Eu estou usando ATL (não gerenciado C ++) o controle do usuário e gostaria de usar o objeto Shockwave ActiveX. Eu preciso saber como declarar isso para que eu possa definir uma propriedade ou chamar um método.

Por exemplo, se eu pudesse atribuir uma variável a ele, então eu gostaria de chamar de 'Variável> LoadMovie ()'

Eu sei que isso é super ridículo ... quase vergonha de perguntar-lo aqui. ;) (Quase)

Foi útil?

Solução

Se você #import a dll (que eu recomendo quando se trabalha com COM porque torna a sua vida muito mais fácil), você pode usar um ponteiro inteligente emparelhado com o CLSID do objeto. Lembre-se que as classes de ponteiro inteligente ter o pós-fix 'PTR' após o nome da interface.

Por exemplo:

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

Espero que ajude.

EDIT: Se você quiser verificar o HRESULT da atribuição, você pode fazer o seguinte:

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

Outras dicas

Eu cortei e colar o código necessário tantas vezes eu não consigo lembrar a sintaxe exata, mas você tem que:

obter um CComPtr <> do interface correta, CreateInstance o objecto QueryInterface para obter a interface que você quer (supondo que você não está usando o CComPtr)

, em seguida, chamar métodos nele.

Como alternativa, você pode #import a dll, então o compilador irá gerar uma classe C ++ com todos os métodos e propriedades para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top