没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:郝浩|2007-10-08 10:05:03.000|阅读 1327 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
ActiveX 控件是微软公司提供的功能强大的程序设计和开发技术,是 COM 组件开发技术的重要组成部分。它是 OLE 的第三个版本,对原先 OLE 控件的最大扩展是增加了 Internet 功能,它不仅可以在支持 OLE 控件的容器中使用,更可以作为一个Internet控件,直接成为网页的一部分。另外,ActiveX 控件作为一种可重用的组件,相当于一个封装好的代码模块,它是通过其方法、属性、事件来与应用程序进行通信的,此外,ActiveX 控件是与开发语言无关的。用户在使用控件时不必考虑它是 VC 还是用 VB 等其它语言开发的,应用程序都是通过 COM 与控件进行通信的。可见,任何支持 ActiveX 控件的软件平台上都可以使用 ActiveX 控件,它使得不同厂商所开发的控件可以真正地组装在一起,从而令软件的生产过程类似于硬件业的各个插件的装配过程一样,实现了软件的工业化,大大降低了软件的开发成本,极大地提高了软件的生产效率,实现了软件资源的共享。
ATL 技术
1)ATL
ATL 是 ActiveX Template Library 的缩写,它是一套 C++模板库。使用 ATL 能够快速地开发出高效、简洁的代码(Effective and Slim code),同时对 COM 组件的开发提供最大限度的代码自动生成以及可视化支持。从 Microsoft Visual C++ 5.0版本开始,Microsoft 把 ATL 集成到 Visual C++开发环境中。目前,ATL 已经成为 Microsoft 标准开发工具中的一个重要成员,日益受到 C++开发人员的重视。
在 ATL 产生以前,开发 COM 组件的方法主要有两种:一是使用 COM SDK 直接开发 COM 组件,另一种方式是通过 MFC 提供的 COM 支持来实现。
直接使用 COM SDK 开发 COM 组件是最基本也是最灵活的方式。但是,这种开发方式的难度和工作量都很大,一方面,要求开发者对于 COM 的技术原理具有比较深入的了解,另一方面,直接使用 COM SDK 要求开发人员自己去实现 COM 应用的每一个细节,完成大量的重复性工作。
使用 MFC 提供的 COM 支持开发 COM 应用可以说在使用 COM SDK 基础上提高了自动化程度,缩短了开发时间。MFC 采用面向对象的方式将 COM 的基本功能封装在若干 MFC 的 C++类中,开发者通过继承这些类得到 COM 支持功能。但使用 MFC 开发的 COM 组件,尤其是 ActiveX 控件的开发,会产生相当大的代码冗余,而且必须要依赖于 MFC 的运行时刻库才能正确地运行。
ATL 技术是目前开发 COM 组件的一种比较理想的技术。ATL 中所使用的基本技术包括 COM 技术、C++模板类技术(Template)以及 C++多继承技术(Multi-Inheritance) 。
2) ATL 的基本使用
使用 ATL 开发一个 COM 应用基本可以分为以下几个步骤:
(1)创建一个新的 ATL 工程,并对工程的选项进行适当的配置。
(2)向新创建的工程添加新的 ATL 类,并对该类进行一些初始配置工作。
(3)根据 COM 应用的基本要求向新的 ATL 类加入新的接口定义,并实现相应的接口成员函数。
(4)编译连接工程,注册 COM 应用。
利用 ATL 技术创建 ActiveX 控件 CircleCtl
1) 创建 ATL 项目
使用 ATL COM AppWizard 创建 ATL 框架为该项目命名为 Circle,按照向导提示向下做,采用默认设置,即 Server Type 类型为 Dynamic Link Library(DLL)。
2) 向 ATL 项目添加 ActiveX 控件
首先从 Insert 菜单项中选择 New ATL Object…调出 ATL Object Wizard 对话框,然后左边 Category 列表选择 Object,右边相应地选择 Full Control。按 Next 继续,出现 ATL Object Wizard 属性对话框,在 Names 选项卡中,我们只需要在 Short Name 编辑框输入 CircleCtl 即可,其它系统就会自动给定,也可以修改,我们这里保持系统给定状态;在 Attributes 选项卡中,选择 Support ISupportErrorInfo 和 Support Connection Points 两个复选框,这两项分别支持出错信息和连接点;Miscellaneous 选项卡保持默认设置;Stock Properties 中我们把 FillColor 添加到支栏中,确定之后就把该控件加到项目中了。
3)为 ActiveX 控件添加自定义属性
现在来添加 Circle 控件的一个基本属性——Radius。
在 Workspace Windows 中 Class View 状态下,右击 ICircleCtl 接口,选择 Add Property,属性类型为 short,名为 Radius,参数为空。系统会自动生成 get_Radius 和 put_Radius 两个成员函数。在 CCircleCtl 中添加 m_radius 变量,用来存储半径。在 CCircleCtl 的构造函数中将其初始化为50,并在 get_Radius 函数中添加*pVal=m_radius; 在 put_Radius 函数中添加 m_radius=newVal; FireViewChange();用来及时更新视图。对于 Radius 的属性,我们通过修改控件的绘制代码来使它起作用。
4) 修改 ActiveX 控件的绘制代码实现属性交换
首先,在 CCircleCtl 的构造函数中对绘制圆的填充色进行初始化,将它的初始值设为红色,即m_clrFillColor=RGB(255,0, 0)。
接下来,我们需要几个全局变量来保存控件区域的信息,在 CircleCtl.h 中添加如下变量:
static POINT CenterPt; |
然后修改 OnDraw 函数,在该绘制函数中,使用 Windows API 中标准的 HDC、HPEN、HBRUSH 以及 SelectObject、Ellipse 等结构和函数来实现绘制的。例如:
// 创建画笔和画刷并选中颜色画圆 |
5) 为 ActiveX 控件添加事件
现在将向 ATL 控件中添加 Click 和 RClick 事件。如果用户在矩形区内点击,则会激发相应事件。现在要向 ICircleCtlEvents 接口添加 Click 方法,首先在“ClassView”中选中“ICircleCtlEvents”右击,选择 Add Method,出现如下对话框,并按下图设置,最后点“OK”按钮就可以添加 Click 事件的实现方法。用同样的方法添加 RClick 事件,参数与 Click 事件一致。接下来我们要为控件实现连接点接口 IConnectionPoint 和连接点容器接口 IConnectionPointContainer。编译好 Circle.idl 文件,生成对应的 Circle.tlb,在“ClassView”中选中“CCircleCtl”,右击,在 Popup 菜单中选择“Implement Connection Point”命令,在弹出的对话框中选中“_ICircleCtlEvents”接口。在类中定义了以两个坐标为参数的 Fire_Click 和 Fire_RClick 方法,调用这两个方法就可以在控件中激发响应的事件。
最后,添加激发事件的代码,我们分别在鼠标左键和右键按下的消息响应中进行处理,激发响应的事件,例如 OnLButtonDown 函数部分代码如下:
WORD xPos = LOWORD(lParam); //鼠标水平坐标 |
至此,可以在 ActiveX Control Test Container 中测试该控件。
网页中使用 ActiveX 控件
在控件生成时,系统同时生成了一个 CircleCtl.htm 文件,在 VC 编辑环境下打开该文件,在和之间加上如下的 VBScript:
<SCRIPT LANGUAGE="VBScript"> |
注意保存。然后在“我的电脑”中打开该 htm 文件,用鼠标单击圆,半径变大,右击圆半径变小。
结束语
本文介绍了基于 ATL 技术以及使用该技术实现了一个简单的圆的控件 CircleCtl 并且介绍了其在网页中的使用。ActiveX 控件作为可重用的代码组件,不仅应用广泛,还可节约开发时间。它将大量的实现细节隐藏起来,以简明的接口与用户名交互,易于使用。对 ActiveX 技术的研究已经成为当今软件业的热点和潮流。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:CSDN接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号