ActiveX/IDL - как экспортировать функции-члены из "Простого объекта ATL" в элементе управления OCX?

У меня есть элемент управления ActiveX в MSVC++10, который компилируется в.ocx. Я добавил еще один "Простой объект ATL" к этому элементу управления, из которого я хочу экспортировать некоторые функции.

Если эта библиотека называется OcxTest Я должен выполнить следующие шаги для экспорта функции:

  1. Объявите функцию как защищенный член класса COcxTestCtrl (генерируется мастером проектов) в файле OcxTestCtrl.h.

  2. Определите функцию в OcxTestCtrl.cpp.

  3. Добавьте его на карту отправки в OcxTestCtrl.cpp:

    BEGIN_DISPATCH_MAP(COcxTestCtrl, COleControl)
         DISP_FUNCTION_ID(COcxTestCtrl, "Test", 1, Test, VT_I4, VTS_I4 VTS_I4)
    END_DISPATCH_MAP()

  4. Добавьте его в 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", который я добавил в проект. Я думаю, что первые два шага аналогичны тому, что я написал. Как насчет двух других шагов?

  1. Является ли определение Карты отправки полностью аналогичным определению основного объекта?

  2. Где в IDL я должен поставить экспортированную функцию?

0 ответов

Другие вопросы по тегам