一、创建项目
1、新建MFC ActiveX控件项目
2、点击下一步,直到完成
3、生成ENP_ActiveXDLL项目
其中ENP_ActiveXDLLCtrl.cpp是写接口的主要功能部分;ENP_ActiveXDLL.idl中定义了之后注册ocx后,调用ocx所需要的重要的clsid,这一id在注册表中也可以找到。
二、添加与dll相对应的对外接口
1、点击视图->类视图 ->ENP_ActiveXDLLLib->右击_DENP_ActiveXDLL,添加->添加方法
2、打开添加方法向导,根据DLL方法,写出对应返回类型和参数类型。
例:调用dll中typedef int(CALLBACK* _SignIn)(char* DealNum, char* BatchNum);在ocx中传入参数与char*对应的是BSTR,如果使用CHAR*,则js没有相对应的类型,在js调用传参中,String与ocx的BSTR对应。另外,传出参数如果是字符串,最好直接将传出字符串通过返回参数返回。
3、修改ENP_ActiveXDLLCtrl.h中的调度和时间ID的枚举enum部分,以解决ENP_ActiveXDLLCtrl.cpp中的红线错误
左图改为右图
4、在ENP_ActiveXDLLCtrl.cpp中的show函数中写出相应的功能代码,以调用dll中签到接口为例
1)将ocx依赖的所有dll放入Release文件中,使用动态调用dll的方式;
2)添加如下图代码到show()中
红色框是dll调用方法,蓝色框中ConvertStringToBSTR()是char*转化为BSTR的函数,需要添加#include <comutil.h>头文件。