赞
踩
ATL 活动模板库,一系列的基于模板的C++ 类,使得开发COM 对象更加方便,它特别支持了关键的COM 功能,包括库存实现,,双接口,标准COM 枚举器接口,连接点,和ActiveX 控件。
如果进行大量的ATL 编程,将有需要了解有关属性的更多信息,这是Visual C++.NET 中旨在简化COM 编程的新功能。
ATL 致力于简化创建高效、灵活、轻量的控件的过程。下面示例演示ActiveX 控件的创建,演示许多ATL 和COM 基础知识。
文件列表及功能如下:
文件 | 描述 |
Polygon.cpp | 包含DllMain、DllCanUnloadNow、DllGetClassObject、DllRegisterServer和DllUnregisterServer 的实现。以及一个对象map,是你的项目里的ATL 对象的列表。这里最初是空白的 |
Polygon.def | 模块定义文件,给链接器提供了DLL 导出所需要的信息 |
Polygon.idl | IDL 文件,描述了你的对象的接口 |
Polygon.rgs | 注册表脚本,包含了注册你的程序的DLL 的信息 |
Polygon.rc | 资源文件,初始时包含版本信息,以及项目名的字符串 |
Resource.h | 资源文件的头文件 |
Polygonps.def | 跨套间调用需要的代理和存根所需要的模块定义文件 |
stdafx.cpp | 将包含ATL 实现文件 |
stdafx.h | 包含ATL 模 |
ATL 控件向导中包含的名称及含义如下:
成员 | 内容 |
short name | 为控件起的名字 |
Class | c++ 类名,用来实现该控件 |
.h 文件 | 包含C++ 类的定义 |
.cpp | C++ 类的实现 |
CoClass | 这个控件的组件类 |
Interface | 接口的名字,控件将实现它的定制方法和属性 |
Type | 控件的描述 |
ProgID | 可读的可以用来查找控件的CLSID 的名字 |
输入了控件名之后,不要点击确定,做一些属性的小修改:点击选项,选择,连接点:这将为IDL 文件中的传出接口创建支持。也可以添加接口,以扩展控件的功能。
点击接口,添加IProvideClassInfo2和ISpecifyPropertyPages接口
外观->可插入选择框
属性-->添加Fill Color属性
添加的文件和描述如下
文件 | 描述 |
PolyCtl.h | 包含CPolyCtl C++类的大部分实现 |
PolyCtl.cpp | CPolyCtl 的剩下的部分 |
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 浏览器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。