标题:[推荐][原创]《ATL简明教程》译文
取消只看楼主
nolove
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2004-11-24
 问题点数:0 回复次数:2 
[推荐][原创]《ATL简明教程》译文

前言

  前一阵子初接触ATL,找了好久都没找到一本好的教材。偶然找到一本<ATL简明教程>可惜是EN的。对于english不太好的初学者来说,实在有点难啊。。。于是,我决定将它翻译后献给大家,希望有人会喜欢:)如果有译得不好的地方,敬请批评指正!   由于时间有限,我将会每天翻译一部分,还请您耐心等待哟!

第一部分:ATL概述

一、ATL的组成部分

1、ATL的简要历史   ATL本来被设计成一种书写快捷的小的COM组件。最初是打算给自动控制使用的,比如说实现事务规则和多层结构的数据库访问。 在它的第一个版本中,ATL没有任何的便利可言,因为它没有用户接口--ATL 1.0没有可视化ActiveX控件,举例来说(C++中使用ATL与不使用它相比,都差不多要做同样多的工作。)2.0版增加了建立可视化的ActiveX控件所需的模板。我们将会在以后讨论ActiveX控件。

2、ATL的特性 ATL的几个重要特性包括:   ◆C++能完成的所有功能。   ◆没有外部程序库,除非你想要使用它。   ◆一种抽象对象和接口的相对高级的方式。   ◆类集合的自动处理,目标创建,参考计算和查询界面。   ◆标准接口的实现。   最后一点,也是最重要的一点:用C++写一个独立的ActiveX控件,你必须亲自书写实现每个接口的每种方法。而且由于是可视化ActiveX控件,至少是超过一打的接口。没有任何可用的方法可以帮助你要尝试解决的问题,但是你无论如何也必须正确的去写这些琐碎的方法(代码)。

3、可选择性   那就是为什么MFC,Visual Basic,Visual J++,Visual FoxPro, 和Delphi对于写ActiveX控件是如此流行的原因:它们在运行时能为你提供数十个各种各样的控件的接口,使你能专注于手边的问题。   但是使用这些技术来实现你的ActiveX控件并不划算:这些东西在运行时要达到一种程度或者另外一种程度,那它将会变得又大又慢。如果你想要你的控件小而且快的话,你可以在C++中直接用ATL实现它们。

4、理想的速度   ATL怎样提供小而且精简的代码?首先,它全然没有依赖外部运行库--因此如果你的代码要用到它的时候,控件仅仅在运行时使用唯一的一次外部程序库;其次,通过不可思议的模板,ATL控件仅包含了一些实际需要的代码。因此C++中ATL控件无论在大小还是速度上都绝对比得上COM。但是它更比COM更简单。

5、代码的重用   微软基础类的主要开发者之一McCrory院长经常说,使用MFC的好处之一就是代码的重用,而且你不能改写或者是调试它。因此MFC事实是一个可以让你预览的免费版--这使你少写几千行代码。而且它使得在编辑器里面对象的连接与嵌入变得相当容易,因为你不用去写这数千行代码。   代码的测试和调试是相当重要的。现在,没有一个库是完美的。但是,一个成熟的库的代码是由许许多多的程序员使用并测试通过了的。假如你恰好是一个程序员,类库可能比你自己写的代码更稳定更快速。它们基本上浓缩了所有开发者的专业知识,而且允许你在此基础上自由的使用它。

6、模板   模板库描述了比函数库或者类库更多种类的重用代码。首先,重用模板的意思是直接重用源代码。那意味着你能在你的程序里面自由的更改它,以使它变得更有效率。同样也意味着,如果你在模板库中发现了一个bug,你就能由此修正这个bug。你不一定要重建MFC或界面并且发布新的副本。仅需要使用新的模板就可以建立下一个版本而不会有更多的漏洞。   如果你不介意重新发布你的源代码,模板库能为你提供所有世界上最好的东西:重用别人的代码所完成的功能和效率就象使用自己写的代码一样。

******************************************************************************************************

7、我们的ATL组成   我们的ATL的组成这一部分将非常简单:当你使用一个现成的方法的时候,别忘了要保持事物的趣味的话,别等它已经过时了才发现。   既然ATL的固有的单线程还流行,那么我们就要去开发它,不过我们将会给它一个双重的接口,以便它能被任何使用COM接口的客户机程序使用,甚至脚本程序。

8、两步创建模块和它的组成部分   既然一个组件(DLL或EXE)能实现一个以上的功能,ATL向导在创建程序时,把整合的开发环境拆分为两部分。首先,你创建组件,然后把功能加入到你的组件中。

9、创建模块   创建模块的详细步骤:从“File”菜单选择“New...”,然后选择你要创建的工程并填写工程名字(当然,这个名字得你点击了“Mod”确定后才有效的),工程对话框如下图所示:(顺便提一下,也不知是也意还是无意的--新建工程时"ATL COM AppWizard"是默认的,不过也可能是因为按照字母顺序来的吧?)

  当你点击“OK”后,你会看到包含你使用了的简短的向导。
(如图“Step 1 of 1")   然后选择你的程序类型:DLL(为进程提供的),EXE(独立的),或者是服务类型EXE。现在选择的是为进程提供服务的DLL。   现在我们不讨论最后三个选择框。因为现在不需要使用MFC,MTS,或者Proxy/stub code。   单击“Finish”,我们可以看到工程包含了一个文件组。这里面包含有如下一些文件: ◆一个.idl类型声明库文件,一个工程有且只有一个这样的声明。 ◆一个.def文件,它包含有4个DLL组件所必需的接口。 ◆一个.rc资源文件,包含有关版本信息、一个工程名字的字符串。 ◆一个资源头文件,它包含有关资源ID的定义。 ◆stdafx.h和stdafx.cpp文件包含了系统调用缓存以快速建造的一些方法。 ◆最后,还有源代码文件.cpp文件,.cpp文件包含了完成程序功能所必需的所有功能代码。我们将详细说明这个文件。

[此贴子已经被作者于2004-12-27 15:06:59编辑过]

搜索更多相关主题的帖子: ATL 译文 教程 align 
2004-12-23 15:19
nolove
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2004-11-24
得分:0 
今天就到这里吧,明天接着来!

[glow=400,#0033FF,2]多情自古傷離別 更那堪冷落清鞦節 今宵酒醒何處 楊柳岸曉風殘月 此去經年 應是良辰好景虛設 便縱有韆種風情 更與何人說[/glow] " target="_blank">http://www.
2004-12-23 15:22
nolove
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2004-11-24
得分:0 

大家放心吧!我一定会坚持的......

还有啊,level 1,我好象也是level 1样...呵呵...所以帮不了你了


[glow=400,#0033FF,2]多情自古傷離別 更那堪冷落清鞦節 今宵酒醒何處 楊柳岸曉風殘月 此去經年 應是良辰好景虛設 便縱有韆種風情 更與何人說[/glow] " target="_blank">http://www.
2004-12-25 15:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-9930-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.242529 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved