Вопрос

Я не знаком с этим и могу начать с него.

Я использую пользовательский элемент управления ATL (неуправляемый C ++) и хотел бы использовать объект ActiveX ShockWave. Мне нужно знать, как объявить это, чтобы я мог установить свойство или вызвать метод.

Например, если бы я мог назначить ему переменную, я бы хотел вызвать 'variable - > LoadMovie ()'

Я знаю, что это супер смешно ... почти стыдно спросить это здесь. ;) (почти)

Это было полезно?

Решение

Если вы # импортируете dll (что я рекомендую при работе с COM, потому что это делает вашу жизнь намного проще), вы можете использовать умный указатель в паре с CLSID объекта. Помните, что классы интеллектуальных указателей имеют после исправления «Ptr» после имени интерфейса.

Например:

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

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: Если вы хотите проверить HRESULT распределения, вы можете сделать следующее:

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

Другие советы

Я вырезал & и вставлял необходимый код так много раз, что не могу вспомнить точный синтаксис, но вы должны:

получить CComPtr < > правильного интерфейса, Создать экземпляр объекта QueryInterface для получения необходимого интерфейса (при условии, что вы не используете CComPtr)

затем вызовите методы для этого.

В качестве альтернативы вы можете #import dll, тогда компилятор сгенерирует класс c ++ со всеми методами и свойствами для вас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top