我在 MSVC++10 中有一个 ActiveX 控件,它编译成 .ocx。我在这个控件中添加了另一个“ATL 简单对象”,我想从中导出一些函数。
如果调用了这个库OcxTest
,我必须执行以下步骤来导出函数:
在文件 OcxTestCtrl.h 中将函数声明为类的受保护成员
COcxTestCtrl
(由项目向导生成)。在 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()
在以下点将其添加到 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 简单对象”的导出定义,我有点迷茫。我想前两个步骤类似于我写的。其他两个步骤呢?
Dispatch Map 的定义是否完全类似于 main 对象的定义?
我必须将导出的函数放在 IDL 的哪个位置?