没有合适的资源?快使用搜索试试~ 我知道了~
首页利用MFC开发ActiveX控件
利用MFC开发ActiveX控件
需积分: 9 14 下载量 190 浏览量
更新于2023-03-03
评论
收藏 1.46MB PDF 举报
本文档详细地描述了使用MFC开发ActiveX控件的技术,并且在文中给出了一个开发按钮控制的例子,值得推荐。
资源详情
资源评论
资源推荐
一个基于MFC的基本按钮编程示例: 在我的机器上,我想不出有哪一个程序不用到一两
个按钮。事实上,按钮是为数不多的、可以说是每个应用程序都要用到的Windows控件之一。
即使是在一个简单对话框中显示信息的应用程序中,通常也要在用完对话框后关闭它时使用
OK按钮。只要说按钮(或某些程序设计环境中所说的命令按钮)是使你机器正常运转的一
个控件就够了。它还是绝对能为你提供全部所需特色,而且程序员改变最多的一个控件。
注 按钮是每个应用程序都使用的一个控件,也是对定制控件的潜力进行讨论时最好的入
口点。
程序员对一个控件的用途作了这么多的强调,但这并没有用去我多少时间,使我不能在本
章的这一节中,确定用哪一种控件向你说明如何去对它进行修改。我还想增加一个新特色,
你也许在按钮中并没有发现这一特色,而这个特色最终是每个人都必需的。正是为了说明下
述特色,我才选择 On/Off按钮作为本章中控件的基础──就好象在进行应用程序设计中每个
人要打开/关闭某个东西一样。将这种特色内置于你使用的控件之中是非常好的。对于从
Visual C++中得到的缺省控件来说,我还增加了其它几个特色。尽管我的这个按钮也许不能
将商业化程序中所用控件的花哨特色全部囊括,但它能帮你开始创建你自己的定制控件。
定义工程
从用户和程序员两个角度来说,本章前面讨论过开发ActiveX控件的一些规则。现在再从
程序员角度深入探讨一下。在开始讨论第一个程序设计例子之前,我们快速地看一下,定义
一个具体的ActiveX控件必须记住哪些规则。下列的建议可以加深你对创建ActiveX控件必须
遵守的一些特殊约束的理解。
技巧 尽管使用能生成 OCX 的编译器就能创建ActiveX 控件,但你会发现使用Microsoft
Visual C++(4.2 版以上)产品将会为你节约许多时间。你在本章还会看到,要使OCX像ActiveX
控件那样正确地工作,哪怕在最好的环境中,也需要一些额外的步骤。使用旧版编译器意味
着你需要用DOS命令行工具来处理额外的步骤。Microsoft Visual C++编译器的 4.2 及 5.x都把
这些工具作为
软件包的一部分,而且将它们的使用自动化了。
保持代码小型化 经验告诉我们,应该保持ActiveX控件的体积在 40KB以下。通常用户不
想下载庞大的、仅能用于对页面图形作动画处理的控件。实在没办法时,把一个大的组件分
成几个小的功能块来实施。
技巧 还可以像第 8 章讨论过的那样,把控件压缩进CAB文件也能够减少下载规模。
使用最少的持久数据 一些OCX要求大量的持久数据来完成任务。例如,你可能会把一个
电子表格控件粘贴到窗体上,而没想到它所包含的持久数据的数量。ActiveX控件没有这般
奢侈,因为你不能对客户机有太多的假设。持久数据不仅增加装入时间和内存需求,而且扩
大了控件自身的规模。
将功能特色限制在最低限度 众多的功能的确能为屏幕演示增光添彩。为本地机器编写
OCX时,几个额外特色不会增加什么问题。事实上,如果不包括它们就会使多数程序员感
到吃惊。但传输时间的确是Internet的一大问题。向控件中每增加一个不是真正必需的图形
或其它特殊声音效果,都要增加装入时间,并且降低控件的价值。ActiveX 控件甚至不能假
定一些特殊效果是否能够在客户机上正确工作(举例来说,客户机可能没有声卡)。
功能单一是关键 建库的原始动机之一是,用容易访问的形式,存贮大量预编译过的函数
调用。作为OCX的前辈,DLL存在的理由正在于此。你会发现市场上的许多OCX (如DLL)
都不止包含一个对象(如按钮)。事实上它们包含了一簇对象。这一策略对于桌面系统来说
当然很不错,但到了Internet上就行不通了。要保证在一个控件中保持一个对象。遵循这样
的原理去模块化控件,确保了用户不必下载他们绝对需要功能以外的东西。
注释 本章中还将对对象进行相当多的讨论。本章中每个对象都是Windows对象(或COM
使用的特殊形式)。一些C++程序员可能认为Windows对象就是C++ 对象。因为COM使用一
1
种特殊形式的Windows对象,这些程序员就认为,使用手边的C++对象写OCX不会出问题。
越过真理一步就是谬误。尽管可以用C++对象创建Windows对象,但存在一些限制。本章篇
幅不足以全面讨论C++程序设计中对象的种种复杂性──这个题目,一些作者要用一章或两
章的篇幅来作综述性讨论──但是,了解一下对于用C++写OCX时能做些什么以及应做些什
么、有哪些限制,都是很重要的。最好按照本章例子中的方法去写OCX,这样才不会出问
题。
测试、测试、再测试 仅仅在本地或仅仅在网络上测试ActiveX控件都是不够的。应该使用
不同的连接,在多种情况下进行测试。本章最后会看到三个层次的本地测试以及一个层次的
针对Internet的测试。可能你想再加进几个层次的测试,根本上说,你对一个ActiveX测试永
远不嫌多。(在发布控件之前测试它是重要的,但在出问题后一定要去查出缺陷,所以要使
ActiveX控件正常工作,维护精确的问题日志也很重要的。)
编写代码
现在到了看一下简单编码示例的时候了。本章使用Microsoft Visual C++6.0(尽管你能够使
用 4.2 以上版本),这在前面已提到过。让我们开始创建一个C++新工程。但是,与你创建过
的其它工程不一样,现在要用MFC ActiveX ControlWizard(MFC ActiveX控件生成向导)来
创建工作区。现在开始吧,使用Flie(文件)|New(新建)命令,系统显示New(新建)对
话框,选择Project Tab(工程页),则会看到如下所示的对话框。
该对话框中的MFC ActiveX Control Wizard(MFC ActiveX控件生成向导)就是开始创建本
工程的那个选项。这个向导提供了一个OCX框架,通过建立这个框架来创建本例的最后版
本。
注释 本例中我使用了新的Microsoft Developer Studio(开发人员工作室)。看到的所有的
屏幕图像都是Windows 95 下的。如选择使用老的界面,你的屏幕图像就会与这儿的图像不
一样。即便你也在使用Developer Studio接口,因为这一产品提供的配置选项可以修改,因此,
2
仍可能产生一些小的差别。
工程开始时,在Project Name(工程名)域中键入工程名。本例用OCXExmpl作为工程名。
在工程列表框中单击MFC ActiveX Control Wizard(MFC ActiveX控件生成向导),然后单击
OK。Microsoft Visual C++自动选择了Win32 选项,它还创建了一个工程目录。
接下来你看到的是MFC ActiveX Control Wizard(MFC ActiveX 控件生成向导)屏幕的两
个对话框。我采用了这两个对话框的缺省设置,但对第二个对话框的subclass(子类)域作
了选择,如果你也想创建像这个例子一样的控件,那么,在这个域中选择BUTTON类。否则,
可以浏览可用类的列表框以确定用什么作为你的控件的基础。还要注意到 Visual C++允许
创建自己的基类。
在第二个向导屏幕上单击Finish(完成)按钮后,则会看到如下的New ProjectInformation
(新工程信息)对话框。
浏览一下所提供的功能列表,确认工程中包含了你所需要的一切内容。核对工程建立无误
后,单击OK,则启动了工程。Visual C++将使硬盘转动一会儿,然后就会看到工程框架。
修改缺省的About对话框
现在已有了一个框架,我们把它填充好。我总是先处理简单的事情(谁不是这样呢?)。
首先修改About对话框。Visual C++ 自动为你创建这个对话框,你需要做的事就是定制它。
访问About框很容易,使用View(视图)|ResourceSymbols(资源符号)命令则显示出如下图
所示的Resource Symbols(资源符号)对话框。
3
选择IDD_ABOUTBOX-OCXEXMPL项,单击View Use按钮显示该对话框。图 10.1 显示
了修改示例中About对话框的一种方法。也许你想把版权信息以及公司信息也包含到About
对话框中。请留意Microsoft为对话框提供了多种工具,其中之一是定制控件按钮,你能够把
另一个OCX贴到About对话框或其它你创建的对话框中。
技巧 用右键单击一个控件,然后从上下文相关菜单中选择Properties(属性) ,于是
Properties(属性)对话框显示出来。通过改变Properties(属性)对话框中 General(普通的)
属性页上的Caption(标题)属性,可以改变静态文本控件的文本。用右键单击Visual C++的
大部分对象,都会显示一个上下文相关菜单──大部分这样的菜单中都包含Properties(属性)
选项。用右键单击Visual C++中某个对象的目的,就在于让你看到能够对这个特定对象做些
什么。请记住,对象不仅仅指控件,它也可以是代码行、工具栏、甚至可以是各种窗口。
Visual C++的最新版本可能要求你对 About对话框做一些过去不必做的事。你可能需要为
About对话框创建一个类──Visual C++的老版本只是假定你会创建新类。双击About对话框,
则看到Adding a Class(添加类)对话框,如下图所示(若没看到该对话框,则说明已有一
个类赋给了About对话框,你不必再往下继续做了)。
4
图 10.1 该对话框编辑器看起来和Visual Basic的一样,区别在于你必须在主编辑器屏幕中
单独访问它
选择Creat a New Class(创建新类)选项,单击OK。Visual C+ + 则显示如下的 New Class
(新类)对话框。
5
剩余31页未读,继续阅读
zhangkef0904
- 粉丝: 0
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0