1、第 26章 使用与编写 ActiveX控件ActiveX是 Microsoft提出的一组使用 COM( Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对 Internet应用开发的技术, ActiveX被广泛应用于 WEB服务器以及客户端的各个方面。同时, ActiveX技术也被用于方便地创建普通的桌面应用程序。本章将详细讲解ActiveX控件的使用方法,及怎么编写 ActiveX控件。26.1 ActiveX控件简介ActiveX控件是基于组件对象模型( COM)的可重用软件组件,旨在用于普通的 Activ
2、eX控件容器和 Internet上的万维网页。本节将对 ActiveX控件的一些相关概念。26.1.1 ActiveX控件的发展ActiveX控件作为进程内服务器(通常是一个小型对象)实现,而进程内服务器可用于任何 OLE容器。只有在识别ActiveX控件的 OLE容器内使用时, ActiveX控件的全部功能才可用。可以通过使用 ActiveX控件的属性和方法来操作该控件,并可以从 ActiveX控件接收事件形式的通知。图 26.1演示了 ActiveX控件容器与有窗口的 ActiveX控件之间的交互。26.1.2 ActiveX控件属性、事件和方法ActiveX控件作为基本的界面单元,必须拥
3、有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的 IDispatch接口来支持。除了属性和方法外, ActiveX控件还具有区别于自动化服务的一种特性 事件。事件指的是从控件发送给其包容程序的一种通知。与窗口控件通过发送消息通知其拥有者类似, ActiveX控件是通过触发事件来通知其包容器的。1属性( Property)2事件( Event)3方法( Method)26.1.3 MFC对 ActiveX控件的支持在使用 ActiveX ControlWizard 创建 ActiveX控件时,使用一组 MFC类作为框架,该向导可自动创建指定给用户项目
4、的以下三个类,可使用这三个类作为基类。COleControlModule:该类是管理 ActiveX控件模块的类,其作用与 CWinApp 类的作用类似。COleControl:该类代表实际控件窗口的基类,由 CWnd 类派生而来,并且包括与容器进行通信的附加 ActiveX功能。COlePropertyPage:该类是一个基类,用来管理控件的特性页。26.2 使用 ActiveX控件本节以一个名为 Calendar Control 8.0的日历控件为例,讲述如何在应用程序中使用 ActiveX控件。26.2.1 浏览 ActiveX控件为了演示如何使用 ActiveX控件,新建一个名为“Us
5、eActiveX”的基于对话框的应用程序,接下来在工程添加并使用 ActiveX控件。按以下步骤,可以显示已经安装在系统中的所有 ActiveX控件。26.2.2 在工程中添加 ActiveX控件本节以 Calendar Control 8.0为例,演示如何在应用程序中添加 ActiveX控件。在对话框中使用 ActiveX控件之前,必须把该控件插入控件工具栏中。26.2.3 设置 ActiveX控件属性和一般控件一样, ActiveX控件的属性也可以进行修改。可以通过ActiveX控件提供的接口通过编程的方式修改控件属性,也可以通过控件的属性页来修改其属性。选中控件,右键单击,在弹出的快捷菜
6、单中选择 【 Properties】 选项,弹出 【 Calendar Control 8.0 Properties】 对话框,如图 26.8所示。26.2.4 使用 ActiveX控件类同一般控件一样,用户需要通过程序为 ActiveX控件设定属性和值,或者从控件得到有关数据。选择 【 View】 |【ClassWizard 】 菜单或使用 Ctrl+W 快捷键,打开 【 MFC ClassWizard 】 对话框,如图 26.10所示。定义变量与一般的控件一样,可以在 【 MFC ClassWizard 】 对话框中,定义 ActiveX控件的 ID对应的变量。在图中定义了对话框中的日历控件对应的变量 m_calendar。