Вызов пользовательского интерфейса COM из проекта ATL - PullRequest
1 голос
/ 17 января 2011

Как мне вызвать интерфейс COM из проекта ATL?

Я следовал примеру на http://www.codeproject.com/KB/COM/comintro.aspx, но они используют класс IActiveDesktop, который определен в wininet.h. Как мне вызвать пользовательский компонент, где у меня нет определения интерфейса. Как мне это сгенерировать?

В проекте MFC я могу создать класс MFC из TypeLib. Но что мне нужно сделать, чтобы сгенерировать мой заголовок из TypeLib в проекте ATL?

1 Ответ

1 голос
/ 17 января 2011

Если вы хотите вызвать сторонний COM-компонент, вам не нужен интерфейсный файл определения (.idl) для этого компонента. Используйте класс ATL CComPtr, который инкапсулирует типичные вещи, которые используются с любым COM-объектом, например CoCreateInstance и QueryInterface. есть также специализация шаблона для IDispatch, которая делает использование CComPtr с элементами управления ActiveX особенно простым.

CComPtr p;
static CLSID id = { 0xcf9904f7, 0x8623, 0x465b, { 0xa0, 0x5e, 0x9d, 0x5a, 0xa, 0x2c, 0x1a, 0xe7 } }; 
p.CoCreateInstance(id);
...