C ++ ATL член Справка по переменному доступу
Вопрос
Я не знаком с этим и могу начать с него.
Я использую пользовательский элемент управления 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 ++ со всеми методами и свойствами для вас.