创建项目(ATL 教程,第 1 部分)
本教程逐步引导你完成非特性化 ATL 项目,该项目创建一个显示多边形的 ActiveX 对象。 该对象包含允许用户更改组成多边形的侧数的选项,以及用于刷新显示的代码。
注意
本教程创建与多边形示例相同的源代码。 如果要避免手动输入源代码,可以从多边形示例摘要下载它。 然后,可以在完成本教程时引用多边形源代码,或使用它检查自己的项目中的错误。 若要编译,请在 Visual Studio 2017 及更早版本中打开 pch.h (stdafx.h) 并替换:
#ifndef WINVER
#define WINVER 0x0400
#endif
替换为
#ifndef WINVER
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#endif
编译器仍会提示 regsvr32
未正确退出,但仍应生成控件的 DLL 并可供使用。
使用 ATL 项目向导创建初始 ATL 项目
在 Visual Studio 2017 及更早版本中:文件>新建>项目。 打开“Visual C++”选项卡并选择“MFC/ATL”。 选择 ATL 项目。
在 Visual Studio 2019 中:选择文件>新建>项目,在搜索框中键入“atl”,然后选择 ATL 项目。
键入多边形 作为项目名称。
源代码的位置通常默认为 \Users\<username>\source\repos,并且将自动创建新文件夹。
在 Visual Studio 2019 中,接受默认值并单击“确定”。 在 Visual Studio 2017 中,单击“确定”以打开 ATL 项目向导。 单击“应用程序设置” 以查看可用的选项。 由于此项目创建控件,并且控件必须是进程内服务器,因此请将应用程序类型 保留为 DLL。 单击“确定”。
Visual Studio 将通过生成多个文件来创建项目。 可以通过展开 Polygon
对象,在解决方案资源管理器中查看这些文件。 下面列出了这些值。
文件 | 说明 |
---|---|
Polygon.cpp | 包含 DllMain 、DllCanUnloadNow 、DllGetClassObject 、DllRegisterServer 和 DllUnregisterServer 的实现。 此外,还包含对象映射,它是项目中 ATL 对象的列表。 该项最初设置为空。 |
Polygon.def | 此模块定义文件提供链接器,其中包含 DLL 所需的导出信息。 |
Polygon.idl | 接口定义语言文件,该文件描述特定于对象的接口。 |
Polygon.rgs | 此注册表脚本包含用于注册程序 DLL 的信息。 |
Polygon.rc | 资源文件,最初包含版本信息和包含项目名称的字符串。 |
Resource.h | 资源文件的头文件。 |
Polygonps.def | 此模块定义文件为链接器提供了有关代理和存根代码所需的导出信息,这些代码支持跨单元的调用。 |
stdafx.cpp | 将 #include stdafx.h 的文件。 |
stdafx.h | 将 #include 和预编译 ATL 头文件的文件。 |
文件 | 说明 |
---|---|
Polygon.cpp | 包含 DllMain 、DllCanUnloadNow 、DllGetClassObject 、DllRegisterServer 和 DllUnregisterServer 的实现。 此外,还包含对象映射,它是项目中 ATL 对象的列表。 该项最初设置为空。 |
Polygon.def | 此模块定义文件提供链接器,其中包含 DLL 所需的导出信息。 |
Polygon.idl | 接口定义语言文件,该文件描述特定于对象的接口。 |
Polygon.rgs | 此注册表脚本包含用于注册程序 DLL 的信息。 |
Polygon.rc | 资源文件,最初包含版本信息和包含项目名称的字符串。 |
Resource.h | 资源文件的头文件。 |
Polygonps.def | 此模块定义文件为链接器提供了有关代理和存根代码所需的导出信息,这些代码支持跨单元的调用。 |
pch.cpp | 将 #include pch.h 的文件。 |
pch.h | 将 #include 和预编译 ATL 头文件的文件。 |
在“解决方案资源管理器”中,右键单击“
Polygon
”项目。在快捷菜单上单击“属性”。
单击链接器。 将 Per-UserRedirection 选项更改为“是”。
单击“确定”。
在下一步中,你将向项目添加控件。