我刚刚开始一个新的 ATL/WTL 项目,我想知道是否仍然需要全局 _Module 变量?
几年前,当我开始使用 WTL 时,需要(至少对于 ATL 3.0)定义一个全局变量,例如:
CAppModule _Module;
让 ATL 正常工作。但最近我在某处读到,这可能不再需要(但向导生成的代码仍在使用它)。我还搜索了 Visual C++ 包含目录,它只在几个地方找到了 _Module - 最值得注意的是 ATL COM 注册表。
那么现在我还需要定义一个全局变量来使用 ATL 吗?
最佳答案
从技术上讲,自 ATL/WTL 版本 7 以来,您不需要全局 _Module
实例。早期的 ATL/WTL 代码通过此特定名称引用 _Module
并期望您声明一个此对象的单个实例。这已被名为 _AtlBaseModule
的单个实例对象所取代,该对象在 atlcore.h 中自动为您声明。
尽管如此,一些最好的 WTL 特性包含在 CAppModule 及其基类 CComModule 中。自动 COM 注册、消息循环处理等。因此,大多数基于 WTL 的重要应用程序仍然需要 CComModule 基类的单例实例。但是,它不需要命名为 _Module
。
关于c++ - ATL/WTL 是否仍然需要使用全局 _Module 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197468/