ATL/WTL是否仍然需要使用全局_Module变量?
问题描述:
我刚开始一个新的ATL/WTL项目,我想知道是否仍然需要全局_Module变量?ATL/WTL是否仍然需要使用全局_Module变量?
倒退几年,当我开始与WTL的工作也被要求(至少对于ATL 3.0),你定义一个全局变量,如:
CAppModule _Module;
要获得ATL正常工作。但是最近我读了一些地方,这可能不再需要(但向导生成的代码仍然使用它)。此外,我通过Visual C++包含目录进行搜索,它只在几个地方找到了_Module - 最着名的是ATL COM注册表。
那么我现在还需要定义一个全局变量来使用ATL吗?
答
从技术上讲,你并不需要一个全球性的_Module
实例,因为ATL/WTL版本7早些时候ATL/WTL代码中引用_Module
通过这个特定的名字,并期望你声明这个对象的单个实例。这已被替换为名为_AtlBaseModule
的单个实例对象,该对象将在atlcore.h中为您自动声明。尽管如此,尽管如此,一些最好的WTL特性包含在CAppModule及其基类CComModule中。自动COM注册,消息循环处理等。因此,大多数非平凡的基于WTL的应用程序仍然需要CComModule基类的单例实例。但是,它不需要命名为_Module
。
答
在最新的WTL版本的示例项目中,仍然使用此项目。
Stdafx.h中:
extern CAppModule _Module;
在实现文件:
CAppModule _Module;
我确实提到最新的向导生成的代码仍然使用它,样本也是这样。尽管如此,仍然没有回答我的问题。 – Daemin 2008-10-15 22:14:14