ATL 基本介绍

ATL 活动模板库,一系列的基于模板的C++ 类,使得开发COM 对象更加方便,它特别支持了关键的COM 功能,包括库存实现,,双接口,标准COM 枚举器接口,连接点,和ActiveX 控件。

如果进行大量的ATL 编程,将有需要了解有关属性的更多信息,这是Visual C++.NET 中旨在简化COM 编程的新功能。

ATL 致力于简化创建高效、灵活、轻量的控件的过程。下面示例演示ActiveX 控件的创建,演示许多ATL 和COM 基础知识。

1. 默认生成项目(这里生成的是进程内DLL)

文件列表及功能如下:

文件描述
Polygon.cpp包含DllMain、DllCanUnloadNow、DllGetClassObject、DllRegisterServer和DllUnregisterServer 的实现。以及一个对象map,是你的项目里的ATL 对象的列表。这里最初是空白的
Polygon.def模块定义文件,给链接器提供了DLL 导出所需要的信息
Polygon.idlIDL 文件,描述了你的对象的接口
Polygon.rgs注册表脚本,包含了注册你的程序的DLL 的信息
Polygon.rc资源文件,初始时包含版本信息,以及项目名的字符串
Resource.h资源文件的头文件
Polygonps.def跨套间调用需要的代理和存根所需要的模块定义文件
stdafx.cpp将包含ATL 实现文件
stdafx.h包含ATL 模

2. 添加ATL 控件

ATL 控件向导中包含的名称及含义如下:

成员内容
short name为控件起的名字
Classc++ 类名,用来实现该控件
.h 文件包含C++ 类的定义
.cppC++ 类的实现
CoClass这个控件的组件类
Interface接口的名字,控件将实现它的定制方法和属性
Type控件的描述
ProgID可读的可以用来查找控件的CLSID 的名字

支持丰富的错误信息和连接点

输入了控件名之后,不要点击确定,做一些属性的小修改:点击选项,选择,连接点:这将为IDL 文件中的传出接口创建支持。也可以添加接口,以扩展控件的功能。

扩展控件的功能

点击接口,添加IProvideClassInfo2和ISpecifyPropertyPages接口

使控件可插入

外观->可插入选择框

添加填充色属性

属性-->添加Fill Color属性

添加的文件和描述如下

文件描述
PolyCtl.h包含CPolyCtl C++类的大部分实现
PolyCtl.cppCPolyCtl 的剩下的部分
PolyCtl.rgs用来注册控件的注册表脚本
PolyCtl.htm一个web 页面,包含对新创建的控件的引用

向导将做如下代码改变:

1. 在stdafx.h和stdafx.cpp文件中添加了#include语句,以包含支持控件所需的ATL文件。

2. 更改了Polygon.idl以包含新控件的详细信息。

3. 将新控件添加到Polygon.cpp中的对象映射。

 

给控件添加属性

这里有一点需要注意,它的向导,和实际有一些出入:

public CComControl<CPolyCtl>,
 public IProvideClassInfo2Impl<&CLSID_PolyCtl, &DIID__IPolyCtlEvents, &LIBID_PolygonLib>

这个代码并不需要添加

添加事件:

_IPolyCtrlEvents_CP.h 没有public 属性,得自己添加public 关键字

 

最后的那个浏览器加载的实验,需要 使用ie 浏览器。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值