Visual C++ 7 中的新 ATL 宏






3.67/5 (3投票s)
2001 年 10 月 16 日
2分钟阅读

66845

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 文件。