2008-10-13 57 views
3

我刚开始一个新的ATL/WTL项目,我想知道是否仍然需要全局_Module变量?ATL/WTL是否仍然需要使用全局_Module变量?

倒退几年,当我开始与WTL的工作也被要求(至少对于ATL 3.0),你定义一个全局变量,如:

CAppModule _Module; 

要获得ATL正常工作。但是最近我读了一些地方,这可能不再需要(但向导生成的代码仍然使用它)。此外,我通过Visual C++包含目录进行搜索,它只在几个地方找到了_Module - 最着名的是ATL COM注册表。

那么我现在还需要定义一个全局变量来使用ATL吗?

回答

5

从技术上讲,你并不需要一个全球性的_Module实例,因为ATL/WTL版本7早些时候ATL/WTL代码中引用_Module通过这个特定的名字,并期望你声明这个对象的单个实例。这已被替换为名为_AtlBaseModule的单个实例对象,该对象将在atlcore.h中为您自动声明。尽管如此,尽管如此,一些最好的WTL特性包含在CAppModule及其基类CComModule中。自动COM注册,消息循环处理等。因此,大多数非平凡的基于WTL的应用程序仍然需要CComModule基类的单例实例。但是,它不需要命名为_Module

1

在最新的WTL版本的示例项目中,仍然使用此项目。

Stdafx.h中:

extern CAppModule _Module; 

在实现文件:

CAppModule _Module; 
+0

我确实提到最新的向导生成的代码仍然使用它,样本也是这样。尽管如此,仍然没有回答我的问题。 – Daemin 2008-10-15 22:14:14

相关问题