ActiveX/IDL - как экспортировать функции-члены из "Простого объекта ATL" в элементе управления OCX?
У меня есть элемент управления ActiveX в MSVC++10, который компилируется в.ocx. Я добавил еще один "Простой объект ATL" к этому элементу управления, из которого я хочу экспортировать некоторые функции.
Если эта библиотека называется OcxTest
Я должен выполнить следующие шаги для экспорта функции:
Объявите функцию как защищенный член класса
COcxTestCtrl
(генерируется мастером проектов) в файле OcxTestCtrl.h.Определите функцию в OcxTestCtrl.cpp.
Добавьте его на карту отправки в OcxTestCtrl.cpp:
BEGIN_DISPATCH_MAP(COcxTestCtrl, COleControl) DISP_FUNCTION_ID(COcxTestCtrl, "Test", 1, Test, VT_I4, VTS_I4 VTS_I4) END_DISPATCH_MAP()
Добавьте его в IDL в OcxTest.idl в следующей точке:
[ uuid(...), version(1.0), control ] library OcxTestLib { importlib(STDOLE_TLB); [ uuid(...) ] dispinterface _DOcxTest { properties: methods: [id(1)] int Test(int x, int y); };
Теперь я немного растерялся относительно того, где я определяю экспорт для другого "Простого объекта ATL", который я добавил в проект. Я думаю, что первые два шага аналогичны тому, что я написал. Как насчет двух других шагов?
Является ли определение Карты отправки полностью аналогичным определению основного объекта?
Где в IDL я должен поставить экспортированную функцию?