65.9K
CodeProject 正在变化。 阅读更多。
Home

Visual C++ 7 中的新 ATL 宏

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (3投票s)

2001 年 10 月 16 日

2分钟阅读

viewsIcon

66845

downloadIcon

621

此示例演示了在 ATL7 中使用新的 ATL 宏 OBJECT_ENTRY_AUTO

引言

ATLMacros 示例演示了使用新的 ATL 宏 OBJECT_ENTRY_AUTO。 这取代了 BEGIN_OBJECT_MAP/OBJECT_ENTRY/END_OBJECT_MAP 组合。

该示例基于 AppWizard 创建的 ATL 项目。 如果您选择遵循本文档中的步骤来创建自己的应用程序,请确保在应用程序设置对话框中选择“DLL 项目”,并且必须确保取消选中“Attributed”复选框,否则代码将使用新的 C++ 属性为 COM 类创建。

在 VC6 中,对象映射 BEGIN_OBJECT_MAP/END_OBJECT_MAP 用于列出服务器中实现 COM 类的所有 ATL 类。 对象映射位于服务器 .cpp 文件中(WinMain()DllMain() 函数所在的位置)。 要将类添加到映射中,使用了 OBJECT_ENTRY 宏。 对象映射为类的注册、初始化和创建提供支持。

在 VC7 中,使用 OBJECT_ENTRY_AUTO 宏代替它。

语法

OBJECT_ENTRY_AUTO(clsid, class )

参数

clsid [in]   由名为 class 的 C++ 类实现的 COM 类的 CLSID。
class [in]   实现由 clsid 表示的 COM 类的 C++ 类的名称。

因此现在没有对象映射了。 您只需将对象条目宏放置在项目的全局范围内,它就会为您完成所有工作。 AppWizard 将此宏放置在 ATL 类头文件的末尾,因此您的所有类代码都位于一个位置。 以前(VC6)很容易忘记将类添加到对象映射中。 现在您的所有代码都位于一个位置,因此很容易重用现有类,因为您只需复制实现它的文件并将它们添加到项目中即可。 不再需要处理 OBJECT_ENTRY 宏了。

示例应用程序

Math DLL 实现了两个 COM 对象:Adder 和 Subtracter。

Adder 对象有一个方法 Add,它返回作为参数传递的两个加数的和。 C++ 类在 Adder.h 和 Adder.cpp 文件中实现。

Subtracter 有一个方法 Sub,它返回作为参数传递的数字的余数。 C++ 类在 Subtracter.h 和 Subtracter.cpp 文件中实现。

MathClient 是一个简单的控制台应用程序,用于测试 Adder 和 Subtracter 对象。 它从命令行读取两个数字和一个操作符号 (+/-),并根据操作调用 Adder 或 Subtracter。 执行操作并输出结果。

为了使演示正常工作,您必须确保已注册 Math.dll 文件。

© . All rights reserved.