比较少人会专门开发控件,但是有时候工作需要,需要开发简单的控件,控件技术 因为要和浏览器交互,所以有些需要注意的点,此文为需要开发简单控件准备,基本 满足基本的功能要求。包含必要的工程设置,方法的创建和调用,属性的添加和使用, 事件的添加,以及事件的使用,和JS的交互示例。希望对你有用。

比较少人会专门开发控件,但是有时候工作需要,需要开发简单的控件,控件技术

因为要和浏览器交互,所以有些需要注意的点,此文为需要开发简单控件准备,基本

满足基本的功能要求。包含必要的工程设置,方法的创建和调用,属性的添加和使用,

事件的添加,以及事件的使用,和JS的交互示例。希望对你有用。

 

1. 以管理员权限打开Visual Stadio并创建MFC ACTIVEX 工程。

以管理员权限打开是因为编译调试时,会在系统注册这个控件,需要管理员权限

 

2. 设置调试环境。以免无法进行调试。

如何开发ActiveX容器 activex控件开发教程_控件

 

3. 设置静态库使用MFC

如何开发ActiveX容器 activex控件开发教程_管理员权限_02

 

4. 在类视图中,添加方法

如何开发ActiveX容器 activex控件开发教程_事件处理_03

 

5. 在类视图中添加属性,如上图选择属性。

属性的用法,

  1. 属性可以在初始化的时候设置。如下图JS。                                         

             

如何开发ActiveX容器 activex控件开发教程_控件_04

        2.  这样设置的属性,需要在代码中持久化

           

如何开发ActiveX容器 activex控件开发教程_控件_05

         3. 属性更改后。控件中会得到通知。

           

如何开发ActiveX容器 activex控件开发教程_事件处理_06

          

           响应函数中在值改变时,会得到通知。


 6 . 为了方便调试,可以增加控制台界面,将调试信息输出到控制台

首先,在App类中,添加如下代码。就可以调用 printf 输出信息到控制台,调试非常方便。

如何开发ActiveX容器 activex控件开发教程_事件处理_07

 

7.  添加事件,和JS交互,有些事件处理事件比较长,可以通过事件通知的形式,通知JS更新状态。还是在类视图,这次选择CTRL类,右击菜单,如下:

如何开发ActiveX容器 activex控件开发教程_事件处理_08

 

事件函数名称可以自定义,也可以用已有的几个事件。

在完成添加后,会自动添加如下代码。也可能是在类的定义里,

如何开发ActiveX容器 activex控件开发教程_控件_09

在添加完事件后,在JS中,可以添加事件处理,如下

 

如何开发ActiveX容器 activex控件开发教程_控件_10

 

 8.  因为是Unicode编码方式,所以需要用到wide转mutil字符的函数,如下,

  

如何开发ActiveX容器 activex控件开发教程_事件处理_11

 

9.  因为JS和ActiveX交互,地址空间是不一样的,如果ActiveX中申请的内存需要返回到JS中,需要用Sys接口申请内存,如下:

    

如何开发ActiveX容器 activex控件开发教程_事件处理_12

 

 

10. 对于mutil和wide char 的转换,还有一种方式就是使用CString 构造。

CString 有传muti char的构造函数。实现自动转化,你就说牛不牛逼,意不意外。


11. 关于运行的时候提示找不到dll,一般如果dll本身没问题的话,肯定是你引用的路径由问题。排除方法是,在调用loadLibrary之前调用 GetCurrentFolder(这个函数不能直接调,我只是想说,你可以找个系统函数获得当前执行路径),如果这个路径下没有dll,那肯定是要报错的嘛!


好了,先记录这么多,后续有高级特性再添加。