0

我在 MSVC++10 中有一个 ActiveX 控件,它编译成 .ocx。我在这个控件中添加了另一个“ATL 简单对象”,我想从中导出一些函数。

如果调用了这个库OcxTest,我必须执行以下步骤来导出函数:

  1. 在文件 OcxTestCtrl.h 中将函数声明为类的受保护成员COcxTestCtrl(由项目向导生成)。

  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. 在以下点将其添加到 OcxTest.idl 中的 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. Dispatch Map 的定义是否完全类似于 main 对象的定义?

  2. 我必须将导出的函数放在 IDL 的哪个位置?

4

0 回答 0