2.4.2 ActiveX控件(1)
ActiveX控件是基于组件对象模型(COM)的可重用软件组件,它支持广泛的OLE功能并可自定义以满足多种软件的需要。ActiveX控件旨在用于普通的ActiveX控件容器和Internet上的万维网页。您既可以用此处介绍的MFC也可以用活动模板库(ATL)来创建ActiveX控件。
ActiveX控件可以在自己的窗口中对自身进行描述,对事件(如单击鼠标)做出响应,并可以通过包括属性和方法的接口进行管理,这些属性和方法与自动化对象中的属性和方法相似。
ActiveX控件不但可以方便移植,而且还支持很多其所不具备的功能,例如与现有OLE 容器的兼容性和将其菜单与OLE容器的菜单集成在一起的能力。并且,ActiveX控件完全支持自动化,使控件得以公开读/写属性和一组可由控件用户调用的方法。
ActiveX控件作为进程内服务器实现,而进程内服务器可用于任何OLE容器。只有在识别ActiveX控件的OLE容器内使用时,才能使用ActiveX控件的全部功能。控件容器类型可以通过使用ActiveX控件的属性和方法来操作该控件,并可以从ActiveX控件接收事件形式的通知。图2-25演示了ActiveX控件的交互过程。
|
| 图2-25 ActiveX控件的交互 |
1.ActiveX控件的活动状态和非活动状态
控件有两种基本状态:活动和非活动。
传统上,根据控件是否有窗口来区分这两种状态。活动控件有窗口,而非活动控件没有窗口。引入了无窗口激活后,这种区别不再通用,但仍适用于许多控件。
当无窗口控件处于活动状态时,它从其容器调用鼠标捕获、键盘焦点、滚动和其他窗口服务。除了可以创建等待直到被激活以创建窗口的控件外,还可以为非活动控件提供鼠标交互。
当有窗口的控件处于活动状态时,它能够与控件容器、用户和Windows进行完全交互。图2-26演示了ActiveX控件、控件容器和操作系统之间的通信路径。
|
| 图2-26 通信路径 |
2.安装ActiveX控件类和工具
安装Visual C++(www.cppentry.com)时,如果在安装过程中选择了ActiveX控件,将自动安装MFC ActiveX控件类和发布及调试ActiveX控件运行时DLL。在默认情况下,ActiveX控件类和工具安装在\Program Files\Microsoft Visual Studio .NET下的下列子目录中。
\Common7\Tools:包含测试容器文件(TstCon32.exe及其帮助文件)。
\Vc7\atlmfc\include:包含使用MFC开发ActiveX控件所需的包含文件。
\Vc7\atlmfc\src\mfc:包含MFC中特定ActiveX控件类的源代码。
\Vc7\atlmfc\lib:包含使用MFC开发ActiveX控件所需的库。
3.MFC中几种常用的ActiveX控件
MFC中有如下几种常用的MFC控件。
BUTTON控件:是从Windows按钮(Button)控件生成的子类。说明就地激活菜单、常用属性页和"关于"框控件选项的使用。
CIRC简单的圆形控件:阐释绘图、常用属性、自定义属性、鼠标事件、自定义事件,添加文本和字体、属性页以及数据绑定。
DB控件:阐释了CRecordSet和CDatabase类的使用。
IMAGE控件:能够异步下载数据。
LICENSED控件:强制使用设计时和运行时许可证。
LOCALIZE控件:具有本地化用户界面的控件。分别说明类型库和资源动态链接库(DLL)的本地化使用。
PAL控件:显示调色板的颜色。说明只读属性、持久的Get/Set属性、持久的参数化属性和图片属性。
PUSH控件:是从Windows所有者描述的按钮(Button)控件生成的子类。说明常用属性、自定义事件和图片容纳器。
REGSVR控件:此实用工具用于调用ActiveX控件中内置的自注册代码以在注册表中添加或移除控件的信息。
SPINDIAL控件:具有可视转盘外观的控件,说明属性页数据验证。
TESTHELP控件:具有自己的帮助文件,可以向用户显示帮助信息。
TIME控件:在运行时不可见并以设定的时间间隔激发计时器事件。说明通知函数和环境属性。
XLIST控件:是从Windows列表框生成的子类,用于显示文本或位图项。说明方法、环境属性、图片容纳器和字体容纳器。