转自:https://blog.csdn.net/babykangaroo/article/details/45795079
本文是入门学习ActiveX的学习笔记,属于系统学习整个框架部分,具体细节自己写代码时再深入。学习参考书籍是《MFC Windows程序设计(第二版)》,使用开发环境是VS2010。总共分为三部分:
1: ActiveX控件基础;
2:创建ActiveX控件;
3:在应用程序中使用ActiveX控件;
第一部分 ActiveX控件基础
一、基本概念
ActiveX控件是一个COM对象,它是实现了某些接口而使自己的外观和行为变得类似于控件的COM对象。它具有属性、方法和事件,分别解释这三项。
1:属性。指控件的一些参数,如背景颜色等。在设计ActiveX控件时,要预见到所有用户能修改的控件外观或行为,并使它们成为控件的特性,可以通过编程公开这些属性。我理解是类似于C++类里的成员变量。
2:方法。调用它们执行有用的工作。我理解类似于C++类里的成员函数。
3:事件。指从控件发给容器的通知。“容器”指拥有ActiveX控件的窗口。窗口控件通过发送消息给它们的所有者发出通知,而ActiveX控件通过激发事件给它们的容器发送通知。当设计ActiveX控件时,就应该考虑容器可能会对哪些发生在控件里的事情感兴趣,并把它们设计为ActiveX事件。
属性、方法和事件分为自定义型和备用型。
自定义型指自己定义的,可以自定义它们的名字,并分配调度ID。
备用型指使用ActiveX控件规范中已经定义过的、指定的名称和调度ID。
ActiveX具有活动和不活动两种状态。
综上所述,ActiveX控件定义如下:
ActiveX控件是一种在窗口中控件,是COM对象,它支持方法、属性以及事件,在应用程序和web网页上都可以使用它们。
二、ActiveX控件容器
也是一个复杂的COM对象。具体先不讨论。
三、环境
使用MFC,因为MFC简化了ActiveX控件和控件容器的编写,提供了所要求的COM接口的实现,封装了连接ActiveX控件和控件容器的协议。也就是说,MFC已经做了大部分的工作。
第二部分 创建ActiveX控件
我看的这本书籍例程都是VC++6.0环境下开发的,但是现在使用的是VS2010,有挺大的差别,所以在这里把使用VS2010创建ActiveX控件的过程中贴图出来。大致有四大步。一、创建MFC ActiveX Control工程;
step1: step2:点击OK,Next;
step3:Run-time License是指是否需要许可权来使用控件。
step4:默认Next就可以了。
step5: 点击“Finish”。
二、给控件添加属性;
打开类视图。
三、给控件添加方法;
四、添加事件
以上只是演示属性、方法和事件在VS2010里是在哪里添加的。
做完以上之后,编译,会得到一个几乎没有任何功能的ActiveX控件。这时候需要测试ActiveX是否能正常使用。VC自带一个测试工具,ActiveX Control Test Container。VC6.0中在Tools菜单下就可以找到:TstCon。但是VS2010下没有,需要自己添上去。http://m.blog.csdn.net/blog/u014028070/38341147这个网址讲的很好。
如何单步调试ActiveX控件呢?在VS2010中,选中工程名--右键--properties--Debugging--Command,将TstCon.exe路径添加进去,确定。回到工程,在需要调试的地方打上断点,F5即可运行调试。第三部分 在MFC应用程序中使用ActiveX控件
1、注册控件。
由于ActiveX是一个COM对象,所以使用时需要注册。在使用VC创建ActiveX控件时,作为处理过程的一部分,控件会被自动注册。但是要是控件提供给别人,就需要注册。注册有两种方法。
一是提供一个安装程序,通过程序自动注册。二是使用Regsvr32实用程序。
Regsvr32 XXXX.ocx 注册
Regsvr32 \u XXXX.ocx 反注册
2、创建一个MFC 对话框程序。然后将ActiveX控件插入。在工具箱里右键弹出以下,然后选择Choose Items。将MyActiveX打勾,OK。在工具箱里就可以看到ocx控件了。然后像添加其他控件一样拖拽到对话框上即可。
或者也可以在需要插入控件的地方点击右键,弹出,选择自己创建的控件即可。