终于进入正题了,怎样在ActiveX中调用另一个ActiveX。我们的项目需要调用华视电子身份证识别仪的ActiveX控件
在这里有很多识别仪ActiveX插件下载:http://www.idukaqi.com/service/huashi/
先在资源页面中,添加一个Dialog资源
打开新建的对话框资源,不用纠结他长什么样子(因为它不会被显示)。在工具箱试图中,点击右键->选择项
在COM组件中找到我们需要调用的ActiveX,可以通过路径确认是否我们需要的。(要调用别的ActiveX,那一定要注册到注册表中。)
然后点击确定后,在对话框中绘制出来
也许说在对话框中右键也可以添加ActiveX控件,但是是无法看到路径的,所以这里不推荐这种方法。
给这个新建的对话框资源一个对应的类
在对话框上右键->添加类
然后选中对话框上的ActiveX控件,右键->添加变量
VS自然会生成一个类CIdcardreaderctrl1,我们输入变量名,选择public
在ActiveXTestCtrl.h中增加一个CMyDialog 成员
在构造函数中用Create方法初始化,但是不需要显示。在此之前还要加一句AfxEnableControlContainer表示启用ActiveX控件
然后在ReadCard和GetName中调用ActiveX中的对应方法
编译后,用系列中的测试页.html测试是否可以读出身份证识别仪上的信息。(其他显示undefined是因为我的ActiveX控件里面还没实现这些方法)