ATL/WTL是否仍然需要使用全局_Module变量
Does ATL/WTL still require the use of a global _Module variable?
我刚开始一个新的ATL/WTL项目,我想知道是否仍然需要全局_Module变量?
几年前,当我开始使用WTL时,需要(至少对于ATL3.0)定义一个全局变量,例如:
CAppModule _Module;
使ATL正常工作。但最近我在某个地方读到,这可能不再需要了(但向导生成的代码仍然使用它)。此外,我还搜索了Visual C++include目录,它只在几个地方找到了_Module,最引人注目的是ATLCOM注册表。
那么,现在我还需要定义一个全局变量来使用ATL吗?
从技术上讲,自ATL/WTL版本7以来,您不需要全局_Module
实例。早期的ATL/WTL代码使用此特定名称引用_Module
,并希望您声明此对象的单个实例。此后,它被一个名为_AtlBaseModule
的实例对象所取代,该对象在atlcore.h中自动为您声明。
话虽如此,一些最好的WTL功能包含在CAppModule及其基类CComModule中。自动COM注册、消息循环处理等。因此,大多数基于WTL的应用程序仍然需要CComModule基类的单例实例。但是,它不需要命名为_Module
。
在最新WTL版本的示例项目中,这一点仍在使用。
在stdafx.h:中
extern CAppModule _Module;
实施文件中:
CAppModule _Module;
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 包括一个类来定义全局变量参数 c++ :(