作者:empty 页数:337 出版社:empty |
开发ActiveX控件本书是作者在计算机上工作了人的时间, 访鹤了人量的在线资源, 分析研究了ActiveX的模型库的基础上总结完成的。内容包括COM入门:ATL入门:MFC入门:在ATL中创建InternetExplorer(Lite) A etive X控件:在ATL中创建Full A civ eX控件:ATL对ActiveX控件的属性页面的支持:ATL中对ActiveX控件事件的支持:在MFC中创建特殊化的Act veX控件:在MFC中创建全性能的ActiveX控件:MFC中对ActiveX控件的属性页面的支持:MFC中对ActiveX控件事件的支持:ActiveX用于Internet.[美] Nathan Wall ance电子科技大学出版社
潘名莲审校本书内容严谨。具有较强的理论性和实用性,可作为木科生、研究生、计算机科研工作者及计算机科学爱好者的参考书,
译者序Wordware Publishing公司打算为Visual C++程序员出版系列ActiveX/面向COM的丛书。这些书中可能有很多内容是重复的,但这样可以保证每木书的独立性。而且。它们都侧重于ActiveX/COM技术的不同方面。因此, 每本书都提供给程序员系列基本的资料, 要么独立地包含了COM的程序, 要么包含了一个或多个COM模板作为应用,多软件公司和程序设计员也对它的支撑技术VBX控件都非常熟悉, 很喜爱它的模块化技术在网上有许多关于VB的技术论坛-究其原因是它具有一些显见的特点:程序小、速度快、易于使用, 对象模块化, 可以说它是部件对象模型《Component Object Model, COM) 技术的先驱。但是, 它的随之而售的一些局限性又防碍了把它推广成为COM的机制, 这首先是因为VBX是为VisualBasic设计的, 而不是基于COM技术的。用户在使用VBX类部件时,还必须采用定的机制将它和VB连接起来, 这多少违背了COM的可移植性原则; 其次还因为它是16位的, 如果不重新编写它的Runtime系统, 那是无法将它变为32位的.如果没有Internet和WWW网的应用和高速发展, OCX可能已经成为了COM技术的主宰产品。为了适应这一快速的变化, 挤身与SUN公司、Net sea pe公司分割Internet的市场, Microsoft
几年前, Microsoft公司的VisualBasic曾创造了该公司软件销售的一个高峰, 中国的很后米, Microsoft公司采纳VBX控件成功的经验, 推出了VBX的后续COM版控件OCX。公司又推出了OCX的更新产品网络部件ActiveX。Microsoft公司方面为ActiveX增添了许多适合于网络应用(如下载) 的新功能, 另一方向又使随后推出的网络编程语言VisualC++, Visual J++和VisualBasic都支持ActiveX部件, 这样, ActiveX没有遇到什么阻力就成为了一种主宰性的COM技术,兴趣的读者。美国Wordware Publishing公司出版的这本“学用Visual C++6.0开发ActiveX控件”是一木学习Visual C++环境中进行ActiveX控件设计的既详细又实在的学习指导书.书中编入了大量编程设计例了,有设计步骤也有详细的程序清单,作者对设计的要点处处都加以说明和解释, 而且, 本书介绍了Visual C++的两种ActiveX设计环境ATL和MFC, 可适合于熟悉不同设计工具的读者选用.另外, 本书是按照ActiveX的不同控件进行分章介绍的, 这种结构可适应不同程度的读者根据自己的情况进行选读, 也可以作为ActiveX初级程序员的翻阅手册。作者给本书附上的一张CD,包含了书中所有材料的项目源代码,给学习者许多捷径可走, 书中还给出了大量的ActiveX相关资料的网址, 读者可以此为线索对ActiveX进行更深入的探索。玲老师以及付茂丹小姐为译稿进行悉心的审校、编辑和文字修订工作,没有他们的支持,此书的出版是不可想象的,在此向他们表示深深的谢意。的地方,在此向读者表示歉意。译者作为一个软件程序设计员,很想把这项新技术介绍给国内的同行、高校学生或有本书的完成离不开电子科技大学出版社的向万成社长的大力支持。潘名莲老师,吴艳
引言库以及阅读了微软的基础类资料的基础上总结完成的。我在ActiveX发布之初, 就对它产生了浓厚的兴趣, 因为它取代了Java占领了Internet这座山头, 我提出写本C++关于ActiveX的书, 工业界也同意有此必要。希望你们能喜欢这本书, 并像我一样认为它是激动人心的!谁能使用这本书?面是个生手,你也能很好地利用本书。本书的所有章节都亿细经过编排,以帮助读者能快速地同时学习ATL、MFC和ActiveX.如果你对A etive X很熟悉, 但未接触过ATL或MFC,那该书将提供足够的资料帮助你边练习、边熟悉其中任何一种开发环境。操作练习的使用说明了避免重蹈覆辙, 采用了很细致的、逐步的指导, 以帮助读者建立ATL和MFC所需的所有项目(pro jeet) 以及支持的系统.图0-1所示的图形将帮你识别操作练习部分的起始点。如果你在寻找如何增加一个属性面, 创建一个ActiveX的项目或在HTML文件上增加一个ActiveX的控件, 那就请直接跳到你所需的章节,找到这标志,打开你的计算机,开始你的发现和创造吧!我不喜欢的计算机类书籍的另一转点(甚至有些是我写的)是它们包含有大量的代码图0-2些说明可不是机器自动产生的。它们将告诉你代码是做什么的和为什么重要。该书包含的内容
第一章COM入门Classes(微软基本类) 编写ActiveX的服务器以前, 你需要理解什么是Component ObjectModel(部件对象模型, COM) , 它是如何工作的, 为什么它很重要, 该章将介绍所有这类信息, 同时帮你了解COM的发展历史和潜在技术, 自动控制(Automation) 以及ActiveX.(code) , 然后却只有一段或两段与此代码几乎无关的交代, 当你在代码列表中发现其中一行无法理解时,你得花很多时间去找导哪里有说明它的文字。在这本书中,为了解决这一问题我采用了逐行说明的方法,这也是我对这种方法的第次尝试。图0-2所示的图形就是包含逐行解释的代码段的开始标志.(如果你对COM、Automation和ActiveX已经很了解了, 完全可以真接进入第二章)
第二章ATL入门ATL代表ActiveX模块库(ActiveX Template Library) , 此概念的外围很广。首先ActiveX指除了COM+外的整个COM。模块(Template) 表示该系统很大程度采用了C++的模块化结构和许多复杂的宏, 库(Library) 说明与许多其他的基于模块的系统不同, ATL提供了很多扩展源代码, 而不是仅仅是二进制的OBJ文件, 这些修正了的源代码可产生最后的代码, 经过编译后产生的可执行文件的容量较小而运行速度快, 同时对外部DLL(动态链接库) 的依赖程度也低。ATL有很多这种扩展源代码, 常使新学者被COM或ATL给搞糊涂。ATL系统的内容就足够写二三本书, 这类书都着重于基础原理, 本罩将介绍ATL是如何与Visual C++结合使用的, 以及它的各种特殊语句的用途, 另外, 还将介绍ATL所使用的模块和宏。但由于这是更高级的使用技巧,这里将不作特别的详细描述。(本书其他不同的章节将涉及它们使用的不同的宏及模块类)当你完成该章后,你就可以开始着手创建功能强大的基丁ATL的COM服务器了, 井请记住要尽可能地使用ATL提供的全部功能。第三章MFC入门MFC代表Microsoft Foundation Classes(微软基本类) 。MFC是一组C++对象的集合,可以访问系列Windows的编程功能, 包括GDI(Graphical Device Interface, 图形设备接),文件的操作,窗的产生和消息句柄,以及操作系统的许多特殊功能。其中之一就是ActiveX; 对它的支持是通过增补对COM(在第一章讨论的内容) 的支持实现的MFC之所以出名是因为它提供C++对象, 而不仅仅是Windows编程的API调用, ActiveX之所以出名也是由于同样的原因, 本书只介绍基本的MFC的C++对象, 本章将介绍MFC是如何与C++结合使用的, 它的各种特殊语句的用途。同时还将简略介绍MFC使用的类(Class) ,但同样由于这是更高级的使用技巧,这里也不作特别详细的介绍(本书共他不同的章节将涉及到它们使用到的类) , 当你学完此章后, 你就能够着手创建简单的基于MFC的ActiveX服务器了, 从此就要记在尽量使用MFC为ActiveX控件开发所提供的所有功能。第四章在ATL中创建Inte met Explorer(Lite) ActiveX控件虽然自动控制(Automation) 将COM置为环境的上导, 但它仍遗留了两个致命的弱点:一是服务器的视觉显示:二是服务器向客户应用程序传送关于用户执行和状态情况信息的方式。另外, VBX是专门为VisualBasic设计的, 而不是专门基于COM的控件, 它只能通过特殊的机制与VB捆绑,这样,它们就能既拥有视觉的用户接,又能把信息回馈给它们的VB容器——这称为事件(event) .微软决定给COM增加以上的功能, 于是就有了OCX控件。如果没有后来的Internet和Java的出现, OCX的发展过程很可能会和Automation一样.面对忽然到来的可能失掉对PC台式机软件控制的威胁, 激发了Microsoft,井开发出了现在的ActiveX系统和该系统所包含的大量COM技术。OCX控件演变为ActiveX, 并成为了该系统的最优秀技术。ActiveX控件具有用户图形接, 能够响应用户的操作,向包含它们的应用程序发送事件发生的通知,并支持一组特殊的属性和方法,称为通用属性和环境属性。ActiveX控制有许多层面(level) , 其中最重要的两个是Full和IE,它们在内部功能性中分别代表不同的层面, 可支持不同的下载大小, 最后需要说明, ActiveX控制可创建成带有一系列从不可见的到透明的属性, 以便再利用Windows的控件.第五章在ATL中创建Full ActiveX控件创建和调试的经验。本章所介绍的全部是IE控件, IE控件是一种主要用于HTML页面的较小的ActiveX控件。然而, ATL中由ActiveX支持的IE控件具有些附加的特性, 它们具有超越网页环境的强大功能.本章将尽量详细地描述这些控件是如何工作的,如何在C艹+和HTML中应用它们(在这里使用不能完全发挥它们的功能) , 并且将用一些篇幅介绍ActiveX控件的绘制和尺寸确定, 这些更适用于Full控件面不是IE控件。当你学完本章后,你就能很快掌握ActiveX控件的所有基本特性, 就可以进入后续的, 更为深入的关于属性页面和事件的讨论了,构成,被称为属性单,属性单是一类用特殊标签制作而成的对话框,可用于按组显示多用户的接控件,它隐藏在文件夹的标签内,当按鼠标时,可以改变其显示的控制内容,就从第四章, 你己经对ATL如何使用ActiveX有一个基本的认识了, 并且也获得了一些第六章ATL对ActiveX控件的属性页面的支持属性页面最初是在Windows 95中使用的, 它由一系列新颖而有用的用户接对话框像弹开个新的文件夹样:Window NT 4和Windows 98都有增强版的属性对话框, 在ActiveX中它们被称为属性页巾。不幸的是, ActiveX实现属性页面的方法是奇特的, 这主要是因为该技术不是基丁COM的, 而是基于Windows的。因此, 属性页面利用COM接, 告诉控件的容器调用对话框资源的位置, 以进行相应的显示, 这与ActiveX控件所使用的接是不一样。即对话框的源代码与它所作用的控件的源代码是分开的,这使得系统工作的代码是Windows代码与COM源代码的奇特混合。虽然ATL可以很好地实现属性页面的功能,但因为系统的这一天然特征,仍需要相当多的手写代码.为了理解这点,木章的任务是在第五章创建的ATL面板的ActiveX控件上增添属性页面支持。第七章ATL中对ActiveX控件事件的支持响应的能力, 井向控件的容器发出指示。ActiveX的事件就是用于实现这些功能的, 它是依靠容器和控件间所采用的两种COM接:ICon nee tion Point和ICon neet Point Container的复杂通信系统米完成的。ATL还利用Message Maps(消息图) , Connection Point Maps(链对于ActiveX控件的用户接, 还欠缺了一个重要的性能, 即对Windows事件(event)接点图) 及ATL代理服务器发生器支持ActiveX和Windows的事件。本章将以对Windows和ActiveX的事件《event) 支持来结束关于ATL Panel的所有控件的学习。第八章在MFC中创建特殊化的ActiveX控件明的或半透明的控件, 到基于现有的Windows控件的控件, 都是在标准ActiveX控件的框架内用已有的Windows控件合成新的控件, 本章将告诉你如何用MFC创建ActiveX控件,并开发出四种很有用的控件和它们在HTML中所起的作用.与ATL一样, MFC也可用于创建不同特性的ActiveX控件, 从无用户接的, 到透
第九章在MFC中创建全性能的ActiveX控件从第八章, 你已经基木知道了MFC是如何使用ActiveX控件的, 同时也具备了一些创属性页面最初是在Windows 95中使用的, 它由一系列新颖而有用的用户接对话框对于A etive X控件的用户接, 还欠缺了一个重要的性能, 即对Windows事件(event)与早期版本的COM不同, ActiveX存在的日的在于Inte met和WWWC WorldWide Web)写计算机编程类图书的作者都会面对一项困难的选择:在书中是否采用源代码?如果本书的目的不是写就一本关于COM, MFC和ATL方面最为完整的资料, 它所完成的建控件和调试的经验, 这章将主要涉及MFC中ActiveX控件支持的一些其他性能。ActiveX控件具备超越Web页环境的强大功能。本章将相当详细地介绍这些控件是如何工作的, 它们在C++和HTML中又将如何使用, 还会用一些篇幅描述ActiveX控件的绘制和尺寸确定的方法, 当你完成本章的学习后, 你就能理解A etive X控件的所有基本特征, 就可以继续后面的关于属性页向和事件的更高级话题了。第十章MFC中对ActiveX控件的属性页面的支持构成,被称为属性单,属性单是一类用特妹标记制作的对话框,可用于按组显示多用户的接控制,它隐藏在文件夹的标签内,当按鼠标吋,可以改变其显示的控制内容,就像弹开一个新的文件夹一样.Window NT 4和Windows 98都有增强版的属性对话框, 在ActiveX中它们被称为属性页面, 不幸的是, ActiveX实现属性页面的方法是奇特的, 这主要是因为该技术不是基于COM的而是基于Windows的。因此, 属性页面利用COM接告诉控制容器调用对话框资源的位置以进行相应的显示, 这与ActiveX控件所使用的接是不一样。即对话框的源代码与它所作用的控制源代码是分开的,这使得系统工作的代码是Windows代码与COM源代码的奇特混合.MFC有很强的实现属性页面的能力, 不需开发者太多的参与, 为了帮助理解这点, 本章的任务是在第九章创建的MFC A x Panel的基础上增添属性页面,第十一章MFC中对ActiveX控件事件的支持响应的能力, 井向控制容器发出指示。ActiveX的事件就是用于实现这些功能的, 它是依靠容器和控制间采用的两种COM接:I Connection Point和I Connect Point Container的复杂通信系统来完成的。MFC中则使用Message Maps(消息图) 和MFC的ClassWizard来支持ActiveX的事件。关于MFC A x Panel控制的学习, 在本章中将用对大量的Windows和ActiveX事件的支持来结束。
第一章COM入门.
51-1什么是COM.
51-2COM是如何产生的.
51-3为什么我们需要COM.
61-4COM是如何工作的.
61-4-1COM服务器.
81-4-2COM的Class Facto y.
61-4-3COM的接.
61-4-4COM的指示记数.
51-4-5 Windows的COM系统.
61-4-6COM的客户.
51-5COM是静态的, Automation是动态的.
81-6 Automation向世界开放了COM.
51-7
61-8
从Automation到OCX再到ActiveX.
ActiveX在Automation服务器上增加了用户接, .
52-1-1关于老版本Visual C++的ATL.
62-1-2ATL的在线资料.
62-2-1 New对话框.
52-2-2ATL AppWizard.
52-2-3“确认”对话框.
62-4-1 Object Wizard的对象.
62-4-2Ohject Wizard的控件.
52-4-3 Object Wizard的Mise ella neous元素.
52-4-4Objeet Wizard的Data Access元素.
82-4-5 Object Wizard的Name标签.
62-4-6Objeet Wizard的Attribute标签.
82-4-7特殊的Object Wizard标签.
52-5-2Add Method To Interface对话框.
52-5-4Edit Attribute对话框.
52-6-1 Proxy Generator.
62-6-2高级服务器.
52-7-1用模板创建定制的类.
62-7-2宏定义扩展为定制的代码.
52-8-1V 3.0中关于AppWizard的修改.
82-8-2V 3.0中关于Obj eet Wizard的修改.
62-8-3V 3.0中关于Class View快捷菜单的修改.
63-2-1 New对话框.
63-2-2MFC的ActiveX拉件Control Wizard对话框.
63-2-3确认对话框.
63-3-1 ClassWizard的Message Maps标签.
63-3-2 ClassWizard的Member Variables标签.
53-3-3 ClassWizard的Automation标签.
63-3-4 ClassWizard的Event标签.
63-3-5 ClassWizard的Class Info标签.
63-4-1MFC的ClassWizard的New Class对话框.
63-4-2 ClassWizard的Add Method对话框.
53-4-3 ClassWizard的Add Property对话框.
63-4-4 ClassWizard的Add Event对话框,
53-5-1利用ClassWizard使用Windows事件.
61-9通用属性和Property Page使ActiveX控件的行为标准化.
51-10连接点支持从ActiveX控件向容器发送事件.
61-11ActiveX的持续性支持超时的状态存储.
51-12下一步学习的内容.
第二章ATL入门.
62-1VisualC++的ATL.
62-2用ATL的AppWizard创建ATL项目.
62-4用AT LOb jeet Wizard增加COM接.
62-5用ATL的Interface Wizard(接自动生成程序) 创建函数和属性.
52-5-1Class View的快捷菜单.
52-5-3Add Property To Interface对话框.
62-6关于ATL项目的一些高级话题.
52-6-3OLEDB Provider.
82-7ATL代码(模板与宏) .
52-8ATL 3.0的新特点.
52-9下一步学习内容介绍.
第三章MFC入门.
53-1Visual C++中的MFC.
53-2用MFC AppWizard创建MFC项目
63-3 ClassWizard展现MFC的魔力.
53-4用ClassWizard对话框增加ActiveX控件的属性.
83-5MFC ActiveX控仟项目的一些与高级开发相关的话题.
53-5-2属性页编辑.
53-6-3下一步学习的内容.
55-4-1存储单元类似于文件夹
65-4-2数据流类似于文件.
53-5-3用ClassWizard将Property Page控件与ActiveX控件属性相连.50
63-6MFC代码(类和宏定义) .51
53-6-1MFC类的C++包装包含许多Windows功能.52
53-6-2宏定义扩展为定制的代码.52
第