精选文章 ATL学习笔记〔一〕

ATL学习笔记〔一〕

作者:weixin_30872499 时间: 2004-07-27 11:36:00
weixin_30872499 2004-07-27 11:36:00

ATL 即活动模板库,是一套基于模板的 C++ 类,使用这些类可以容易地创建小型、快速的组件对象模型 (COM) 对象。它具有对主要 COM

功能的特殊支持,包括:IUnknown、IClassFactory、IClassFactory2 和 IDispatch 的常用实现;双重接口;标准 COM 枚举数接口;连

接点;分开的接口;ActiveX 控件。

[[
看来,ATL是用C++开发COM的一个很好的选择!
]]

ATL 代码可以用来创建单线程对象、单元模型对象、自由线程模型对象或既是自由线程又是单元模型的对象。

模板有一些像宏。与使用宏一样,调用模板将使它展开(伴随适当的参数替换)为已经编写的代码。但是,模板比这更进一步,它允许基于

作为参数传递的类型创建新类。这些新类能够实现以类型安全的方法执行在模板代码中表示的操作。
模板库(如 ATL)与传统的 C++ 类库的区别在于:它们通常只作为源代码(或作为具有少量的提供支持的运行时的源代码)提供,并且在

本质上没有固有的分层结构或没有必要有分层结构。不是从类中派生以得到所需的功能,而是从模板中实例化类。

ATL 使您可以很容易创建 COM 对象、自动化服务器和 ActiveX 控件。ATL 为许多基本的 COM 接口提供内置支持。
ATL 作为在应用程序中包括的源代码提供。ATL 还使一个 DLL (atl71.dll) 可用,该 DLL 包含可以在多个组件之间共享的代码。但是,该

DLL 并非必要。

[[
看过一些讲COM的书上说:COM只是一种规范,而它的表现形式通常是一个DLL!但是并不绝对是DLL!
那还有什么形式呢?
]]


使用 ATL
ATL 对于用 C++ 创建 COM 组件和节省空间都是一种快速简便的方法。如果不需要 MFC 自动提供的所有内置功能,使用 ATL 创建控件。

使用 MFC
MFC 允许创建具有完整功能的应用程序、ActiveX 控件和活动文档。如果已经使用 MFC 创建了控件,可能需要继续使用 MFC 进行开发。

当创建新控件时,如果不需要 MFC 的所有内置功能,可考虑使用 ATL。

[[
呵呵,看来ATL比MFC要好不少了!最起码体积占优势呀!

不过,到这里可以有一些肯定的问题了,ATL:活动模板库、MFC基本类库!都是类库!ATL和MFC是平行的!不要搞出笑话!
]]


活动模板库 (ATL) 是一套基于模板的 C++ 类,用以简化小而快的 COM 对象的编写。


[[
ATL是一套现成的类库,提供给程序员,目的是编写COM对象的!
]]

使用 ATL 项目向导的“应用程序设置”页为新 ATL 项目设计和添加基本功能。

属性化
默认值。创建使用属性的 ATL 项目。选择此选项后,module 属性将插入到项目的 .cpp 文件中。该属性自动实现 DllMain、

DllRegisterServer、DllUnregisterServer、DllGetClassObject 和 DllCanUnloadNow。ATL 项目向导生成两个项目:支持属性的框架

ATL DLL 项目(称为 ProjName)和代理/存根 (stub) 项目(称为 ProjNamePS)。
属性化项目不允许 MFC 支持和合并代理/存根 (stub) 代码。

默认情况下,其他将对象和控件插入项目的 ATL 向导使用属性化代码。


服务器类型
从三种服务器类型中选择一种:

动态链接库 (DLL)
选择以创建进程内服务器。
可执行文件 (EXE)
选择以创建本地进程外服务器。此选项不允许 MFC 或 COM+ 1.0 支持。它不允许合并代理/存根 (stub) 代码。
服务 (EXE)
选择以创建当 Windows 启动时在后台运行的 Windows 应用程序。此选项不允许 MFC 或 COM+ 1.0 支持,也不允许合并代理/存根 (

stub) 代码。
附加选项
注意   所有的附加选项仅适用于 DLL 项目。
允许合并代理/存根(stub)代码
选择“允许合并代理/存根(stub)代码”复选框是为了需要封送处理接口时比较方便。此选项在与服务器相同的 DLL 中放置 MIDL 生成的代理

和存根 (stub) 代码。
支持 MFC
选择以指定对象包含 MFC 支持。此选项将项目链接到 MFC 库,以便可以访问它们包含的任何类和函数。
支持 COM+ 1.0
选择修改项目生成设置以支持 COM+ 1.0 组件。除标准库列表以外,向导还添加了 COM+ 1.0 组件特定库 comsvcs.lib
另外,当启动应用程序时 mtxex.dll 在主系统上延迟加载。

支持组件注册器   如果 ATL 项目包含对 COM+ 1.0 组件的支持,则可以设置此选项。组件注册器使 COM+ 1.0 对象得以获取组件列表、注

册组件或注销组件(个别或同时)。



从MSDN里学习

转载于:https://www.cnblogs.com/dsclub/archive/2004/07/27/27849.html

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:mips的函数调用与堆栈

下一篇:被C#2005 Express 撞了一下腰

您可能感兴趣

  • 【计算机网络】第七章:网络安全

    【计算机网络】第七章:网络安全 目录 网络安全问题概述 1.1.计算机网络面临的安全性威胁 1.2.被动攻击和主动攻击 1.3.计算机网络通信安全的目标 1.4.恶意程序(rogue program) 1.5.计算机网络安全的内容 1.6.一般的数据加密模型 两类密码体制 一、对称密钥密码体制 1.1.对称密钥的缺点与优点 1.2.数据加密标准 DES 1.3.DES 的保密性 二、公钥密码...

  • 怎样学习Python

    在了解了Python的优势、应用、就业前景以及其不可替代的价值之后,相信大家都会有学习python的冲动。那应该如何学习Python呢?买一本书、找一套视频、报名一个培训班?从理论上来讲,无论选择哪种学习方式,都可以掌握Python语言,但实际情况而言,总会因为某些原因导致自己的学习计划搁浅。所以在这里整理本片文章,希望本文能为大家的学习节约更多的时间成本。 1、找到自己学习Python的初...

  • 工作流学习2(书本)

    1、流程引擎的创建。 1.1、ProcessEngineConfiguration的buildProcessEngine方法 使用ProcessEngineConfiguration的create方法可以得到ProcessEngineConfiguration的实例。ProcessEngineConfiguration中提供了一个buildProcessEngine方法,该方法返回一个Pro...

  • 项目沟通管理和项目干系人管理

    在管理项目时,沟通是一个过程,是人们分享信息、表达思想和情感的过程,包括信息的生成、传递、接收、理解和检查。 项目经理的绝大多数时间都用于与团队成员和其他干系人的沟通,无论这些成员或干系人是来自组织内部还是组织外部。 沟通的基本构成,包括如下: 接收者和发送者; 信息; 渠道; 沟通的方式,在进行沟通过程中,要根据沟通目标、参与者的特点选择适合的沟通方式。一般沟通过程所采用的方式分为以下几类...

  • 计算机转方向的建议(干货)

    转计算机方向其实并不难,但你得知道怎么转。 甚至你不需要上很多课,不需要报任何培训班,不需要花很多钱。 1、只看最短路,你只需要4门课: 编程语言 (Java 或者 C/C++) 算法与数据结构 数据库 一门技能课 (网页开发,移动端开发,云计算,AI等) 别看计算机课很多,什么操作系统,计算机网络等等,那些课固然很好,但对我们转专业的学生来说: 时间有效,精力要用在刀刃上,优先去补那些最核...

  • pytorch中的torchvision.transforms模块详解

    torchvision.transforms torchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的。 data_transforms = transforms.Compose([ transforms.RandomResizedCrop(224), t...

  • python学习001

    前言: 1、运维/网络为什么要学习编程? (1)运维/网络中所有已学的命令其实都是已经编制好的程序,创造命令就是编写程序; (2)在云计算领域中,繁琐的命令配置已经不能满足日常需求,深入发展是需要贴近业务/研发的,因此就要能够创造命令/编写程序/开发; (3)网络安全领域中,可以深入理解渗透、攻防等细节,Kali-Linux ,SDN(命令对应网络)夯实技术; (4)对于校招而言,大型互联网...

  • 适合新手练习的Python项目有哪些?

    适合新手练习的Python项目有哪些?简单易上手的Python项目汇总:Web 项目设计:内容聚合器、正则表达式查询工具、网址缩短、便利贴、功能、测验、GUI 项目设计:MP3 播放器、闹铃提醒工具、文件管理器、记账功能、命令行项目设计:通讯录、网站连接检查、批量文件重命名工具、目录树生成器。   一、Web 项目设计:内容聚合器(Content Aggregator)   该项目设计的主要...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。