c++ - ATL/WTL 是否仍然需要使用全局 _Module 变量?

标签 c++ atl wtl

我刚刚开始一个新的 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/

相关文章:

c++ - QT:如何根据 SpinBox 的值提高/降低标签的值

C++ if语句使用lambda表达式返回true但输出来自false,为什么

c++ - 一个在 C++ 中打印 vector 和列表的函数

c++ - 我将使用哪个 HWND 在 WinMain 函数中创建对话框?

windows - 为什么 Windows Search 会在我的 IFilter 中查询一堆奇怪的界面?

c++ - 到 ATL 的静态链接总是失败

c++ - DTN_DATETIMECHANGE 断点和日期时间选择器控件是否存在问题?

c++ - 使用 constexpr 查找表

c++ - 是否可以制作一个有形状的、alpha 混合的对话框?

c++ - 从 CPropertyPageImpl 打开 CDialogImpl