第4章 Activex控件
第4章 ActiveX控件
ActiveX控件基础 ActiveX控件发展历史 Activex控件的属性 ° ActiveX控件的事件 ActiveX控件的方法 使用 ActiveX控件的一般方法 日历控件的实现实例 使用 ActiveX控件与使用标准 Windows控件非常类似,标准 控件作为操作系统的一部分,可在程序中直接使用,而 ActiveX 控件需要事先安装到项目中,使用时,可通过属性对话框设置 控件的属性、分配资源标识符,关联成员变量,映射控件事件 安装控件并添加到项目中 映射控件事件
•ActiveX控件基础 •ActiveX控件发展历史 •ActiveX控件的属性 •ActiveX控件的事件 •ActiveX控件的方法 •使用ActiveX控件的一般方法 •日历控件的实现实例 使用ActiveX控件与使用标准Windows控件非常类似,标准 控件作为操作系统的一部分,可在程序中直接使用,而ActiveX 控件需要事先安装到项目中,使用时,可通过属性对话框设置 控件的属性、分配资源标识符,关联成员变量,映射控件事件 •安装控件并添加到项目中 •映射控件事件
ActiveX控件的历史 1.VBX作为VB的扩展,作为可重用的软件组件,可直接嵌入应用程序 中,MFC2.0开始支持 2.VBX为16位,Win32中,推出OLE2.0,发展OLE控件,称为OCX 3.随着网络的发展,对OCⅩ改进,使其更适合网络传播,将其与OCX 起称为 ActiveX控件 4. ActiveX控件的特点 ActiveX控件是直接插入程序中的软件模块,基于COM技术 ActiveX控件的资源非常丰富,可通过网络或软件开发商获得, 也可自己开发 ActiveX控件,使用也非常方便: 将 Activex控件拖放到资源模板的适当位置,设置它的资源标识 符和属性,关联成员变量,映射控件事件(使用控件时,需要 将控件与控件类关联)
1. VBX作为VB的扩展,作为可重用的软件组件,可直接嵌入应用程序 中,MFC2.0开始支持 2. VBX为16位,Win32中,推出OLE2.0,发展OLE控件,称为OCX 3. 随着网络的发展,对OCX改进,使其更适合网络传播,将其与OCX 一起称为ActiveX控件 4. ActiveX控件的特点 • ActiveX控件是直接插入程序中的软件模块,基于COM技术 • ActiveX控件的资源非常丰富,可通过网络或软件开发商获得, 也可自己开发ActiveX控件,使用也非常方便: 将ActiveX控件拖放到资源模板的适当位置,设置它的资源标识 符和属性,关联成员变量,映射控件事件(使用控件时,需要 将控件与控件类关联) ActiveX控件的历史
ActiveX控件的属性 1.属性:控件的特征或特性,具有符号化名称,在控件内部通过 整数索引对应,类似类中的成员变量 2.公共属性和自定义属性 控件类的基类为 COleControl,公共属性由该类定义 自定义属性由控件开发者定义,在控件类提供相应成员函 数访问这些属性 3.访问控件的属性 在程序设计阶段,可通过属性对话框访问控件的属性,在 程序运行阶段,可通过调用相应的方法访问控件属性,对 于公共属性,访问的方法由 COlecontrol类提供,对于自定 义属性,这些方法由控件开发者提供 注意:程序运行阶段,只能设置非只读属性
ActiveX控件的属性 1. 属性:控件的特征或特性,具有符号化名称,在控件内部通过 整数索引对应,类似类中的成员变量 2. 公共属性和自定义属性 • 控件类的基类为COleControl,公共属性由该类定义 • 自定义属性由控件开发者定义,在控件类提供相应成员函 数访问这些属性 3. 访问控件的属性 • 在程序设计阶段,可通过属性对话框访问控件的属性,在 程序运行阶段,可通过调用相应的方法访问控件属性,对 于公共属性,访问的方法由COleControl类提供,对于自定 义属性,这些方法由控件开发者提供 • 注意:程序运行阶段,只能设置非只读属性
Activex控件的事件 1.用户操作控件(如鼠标单击、输入数据等),控件将激发事件 并将事件通知控件容器,控件类将调用相应的事件处理函数 2.可以通过 Class wizard映射控件事件,类似于消息映射,将事件 处理函数和事件关联起来,当控件容器收到事件通知时,将调 用控件类的这一事件处理函数 3.公共事件和自定义事件 共有事件由 COle Control类定义并进行映射,可以使用共用 事件的默认处理函数,也可以在控件类中重载它们 自定义事件由控件开发者定义 4.要点: Active控件、控件容器、控件类、控件事件映射的概 念及联系
ActiveX控件的事件 1. 用户操作控件(如鼠标单击、输入数据等),控件将激发事件 并将事件通知控件容器,控件类将调用相应的事件处理函数 2. 可以通过ClassWizard映射控件事件,类似于消息映射,将事件 处理函数和事件关联起来,当控件容器收到事件通知时,将调 用控件类的这一事件处理函数 3. 公共事件和自定义事件 • 共有事件由COleControl类定义并进行映射,可以使用共用 事件的默认处理函数,也可以在控件类中重载它们 • 自定义事件由控件开发者定义 4. 要点:ActiveX控件、控件容器、控件类、控件事件映射的概 念及联系
ActiveX控件的方法 1. Activex控件与应用程序的交换 用户操作控件→控件激发事件并通知控件容器→控件容器 收到事件通知→控件类调用控件事件处理函数 控件容器通过调用控件方法,间接操作控件 控件的方法是应用程序向控件发送数据的接口,与控件类 的成员函数相关联,通过调用控件的成员函数,即可间接 调用控件内部的方法 2.公有方法与自定义方法 公有方法由 COlecontrol类提供 自定义方法由控件开发者提供
ActiveX控件的方法 1. ActiveX控件与应用程序的交换 • 用户操作控件→控件激发事件并通知控件容器→控件容器 收到事件通知→控件类调用控件事件处理函数 • 控件容器通过调用控件方法,间接操作控件 • 控件的方法是应用程序向控件发送数据的接口,与控件类 的成员函数相关联,通过调用控件的成员函数,即可间接 调用控件内部的方法 2. 公有方法与自定义方法 • 公有方法由COleControl类提供 • 自定义方法由控件开发者提供
使用 Activex控件的一般方法 生成支持 ActiveX控件的控件容器程序 2.搜索需要的控件(通常保存在扩展名为OCⅹ的动态链接库文件 中),并将控件登记到注册表中 3.将注册的控件添加到创建的项目中 4.与普通控件的使用类似,将控件添加到控件容器中,并设置控 件的属性、资源标识符、关联成员变量 5.使用 Class Wizard映射控件事件,编写控制函数 6.注册控件时,可使用 Windows System Regsvr32.exe工具 注册: Regsvr32控件文件名OCX 反注册: Regsvr32/控件文件名OCX
使用ActiveX控件的一般方法 1. 生成支持ActiveX控件的控件容器程序 2. 搜索需要的控件(通常保存在扩展名为OCX的动态链接库文件 中),并将控件登记到注册表中 3. 将注册的控件添加到创建的项目中 4. 与普通控件的使用类似,将控件添加到控件容器中,并设置控 件的属性、资源标识符、关联成员变量 5. 使用ClassWizard映射控件事件,编写控制函数 6. 注册控件时,可使用Windows\System\Regsvr32.exe工具 注册:Regsvr32 控件文件名.OCX 反注册:Regsvr32/u 控件文件名.OCX
安装控件 生成支持 ActiveX控件的应用程序 在 App wizard向导的第二步,选中 ActiveX Controls选项 要点:此时 App wizard所生成的项目只是比普通项目多添 加两行代码,一是位于应用程序类的 IInitInstance开始处的 Afx Enable ControlContainer(:在项目的头文件 std Afx h中 包含 afxdisp h头文件。在不支持 ActiveX控件的项目相应 地方添加这两行代码,亦可使之支持 ActiveX控件。 2.安装日历控件 Microsoft monthview Control位于 System Mscomce22.ocx文 件中,通常随着 Office或 Visual studio60的安装将安装并 注册到系统中,若没有安装,可借助 Regsvr32来完成 添加该控件项目中,生成相应的控件类 设置属性、配置ID、关联成员变量
安装控件 1. 生成支持ActiveX控件的应用程序 • 在AppWizard向导的第二步,选中ActiveX Controls选项 • 要点:此时AppWizard所生成的项目只是比普通项目多添 加两行代码,一是位于应用程序类的InitInstance 开始处的 AfxEnableControlContainer();在项目的头文件stdAfx.h中 包含afxdisp.h头文件。在不支持ActiveX控件的项目相应 地方添加这两行代码,亦可使之支持ActiveX控件。 2. 安装日历控件 • Microsoft Monthview Control位于System\Mscomce2.ocx文 件中,通常随着Office或Visual Studio 6.0的安装将安装并 注册到系统中,若没有安装,可借助Regsvr32来完成 • 添加该控件项目中,生成相应的控件类 • 设置属性、配置ID、关联成员变量
控件类 MOnth view解析 GetXXX, SetXxx成员函数对,用来获取、设置控件属性,成员函 数与控件内部的方法调用存在映射关系,调用成员函数最终将映射 到调用控件的方法 2.映射控件事件 与消息映射类似,用户操作控件将激发事件,控件将事件通知 控件容器,容器接收到事件后,将调用控件类的事件映射函数 要点:公有事件在控件类的基类 COle control中有默认的事件映 射函数,可以在控件类中重载它;对于自定义事件,需要在控 件类中使用 Class Wizard进行事件映射 3.实例:映射日历控件的 Selchange事件
控件类CMonthView解析 1. GetXXX,SetXXX成员函数对,用来获取、设置控件属性,成员函 数与控件内部的方法调用存在映射关系,调用成员函数最终将映射 到调用控件的方法 2. 映射控件事件 • 与消息映射类似,用户操作控件将激发事件,控件将事件通知 控件容器,容器接收到事件后,将调用控件类的事件映射函数 • 要点:公有事件在控件类的基类COleControl中有默认的事件映 射函数,可以在控件类中重载它;对于自定义事件,需要在控 件类中使用ClassWizard进行事件映射 3. 实例:映射日历控件的SelChange事件