C ++ ATL член Справка по переменному доступу - PullRequest
1 голос
/ 06 января 2009

Я не знаком с этим и могу использовать удар с ног.

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

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

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

Ответы [ 2 ]

1 голос
/ 06 января 2009

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

Например:

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

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

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

ISomeInterfacePtr pSomeInterface = 0;
HRESULT hr = pSomeInterface.CreateInstance( CLSID_SomeComponent );
0 голосов
/ 06 января 2009

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

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

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

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

...