Требует ли ATL / WTL использования глобальной переменной _Module?

Я только начинаю новый проект ATL / WTL, и мне было интересно, требуется ли по-прежнему глобальная переменная _Module?

Несколько лет назад, когда я начал работать с WTL, требовалось (по крайней мере, для ATL 3.0), чтобы вы определяли глобальную переменную, такую ​​как:

CAppModule _Module;

Чтобы ATL работал правильно. Но недавно я где-то читал, что это может больше не требоваться (но код, сгенерированный мастером, все еще использует его). Также я провел поиск по каталогам Visual C++ include, и он обнаружил _Module только в нескольких местах, в первую очередь в реестре ATL COM.

Так что мне все еще нужно определять глобальную переменную для использования ATL в наши дни?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
3 701
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В примерах проектов последней версии WTL он все еще используется.

В stdafx.h:

extern CAppModule _Module;

В файлах реализации:

CAppModule _Module;

Я уже упоминал, что последний сгенерированный мастером код все еще использует его, то же самое для образцов. Однако до сих пор не отвечает на мой вопрос.

Daemin 16.10.2008 02:14

Поскольку вы упомянули в нет образцы WTL, которые более интересны, чем те, что находятся в папках VS, я подумал, что было бы вполне уместно упомянуть файлы.

Johann Gerell 18.10.2008 03:16
Ответ принят как подходящий

Технически вам не нужен глобальный экземпляр _Module, так как ATL / WTL версии 7. Ранее код ATL / WTL ссылался на _Module под этим конкретным именем и ожидал, что вы объявите единственный экземпляр этого объекта. С тех пор он был заменен одним экземпляром объекта с именем _AtlBaseModule, который автоматически объявляется для вас в atlcore.h.

При этом некоторые из лучших функций WTL содержатся в CAppModule и его базовом классе CComModule. Автоматическая регистрация COM, обработка цикла сообщений и т. д. Таким образом, большинству нетривиальных приложений на основе WTL по-прежнему требуется одноэлементный экземпляр базового класса CComModule. Однако его не нужно называть _Module.

Другие вопросы по теме