本代码程序下载地址:http://www.qcode.org/article/qcode/code5/code51/200508/7914.html
代码简介或代码解析:
如何用ATL创建ActiveX控件
实现了一个ActiveX控件,它在一个圆内部有个正多边形,当用户在多变形内部单击将会使多边形的边数在当前的基础上+1,在多变形外部单击将会使多边形的边数在当前的基础上-1,并能改变多边形的颜色.最后举了两个例子说明了如何使用这个刚刚生产得控件.一个是把该控件应用到网页中,一个则是用于一个基于对话框的程序中.详细代码请下载压缩包.
(一) 创建工程
(1) 打开VC6集成开发环境,按新建按钮,选择PROJECT标签。
(2) 选择ATL COM AppWizard。
(3) 在右侧Project Name下面的空白处输入"Polygon"。
如下图所示:

图1
按下OK按钮,出现如下对话框:

图2
按Finish按钮,接受默认设置,出现如下对话框:

图3
按下OK按钮,ATL COM AppWizard将生成一系列的文件,现在描述如下:
Polygon.cpp:
包含了DllMain,DllCanUnloadNow, DllGetClassObject,DllRegisterServer,DllUnregisterServer的实现,
同时它也包含object map:
BEGIN_OBJECT_MAP(ObjectMap)
//这里将列出你的工程中将会用到的ATL对象,这里最初为空,
//因为我们目前还没有创建新的ATL对象
END_OBJECT_MAP()
Polygon.def DLL便准模块定义文件
Polygon.dsw 项目工作区文档
Polygon.dsp 项目设置文档
Polygon.idl 接口定义语言文件, 它详细的描述了您的工程中所有的接口
Polygon.rc 资源文件, 它包含了版本信息和工程名称字符串
Resource.h 资源文件的头文件
Polygonps.mk 这个就是make file,它能被用来创建代理存根DLL
Polygonps.def 代理存根DLL的模块定义文件
StdAfx.cpp 此文件包含ATL的执行档
StdAfx.h 此文件包含ATL的头文件
为了使它(Polygon DLL)变得有用,我们需要用ATL Object Wizard给它添加一个控件(control)。
(二)添加一个控件
(1) 打开INSERT菜单,选择New ATL Object项,出现如下对话框:

图4
(2) 我们在左边选择"Controls",右边选择Full Control,按下NEXT按钮,出现如下所示对话框:

图5
(3) 我们在Names标签页,"Short Name"后面的空白中输入"PolyCtl",这时你将注意到其他的空白将会自动完成。
Class域显示控件将会使用的类名称。
CoClass是控件的组件类ID
Interface是接口名称,我们将会在此接口中实现一些方法和属性
Type是控件描述
ProgID是易记的类ID名称,用它可以得到控件的CLSID
(4) 为了激活错误提示信息和connection points支持,我们选择Attributes标签页,选择Support ISupportErrorInfo和Support Connection Points,结果如下图所示:

图6
(5) 由于我们将会在多变形内部染色,所以我们需要增加一个Fill Color属性支持。我们选择stock property标签页,在左边的列表框中双击Fill Color,结果如下图所示:

图7


