ATL / WTL nécessite-t-il toujours l'utilisation d'une variable globale _Module?

StackOverflow https://stackoverflow.com/questions/197468

  •  10-07-2019
  •  | 
  •  

Question

Je viens de commencer un nouveau projet ATL / WTL et je me demandais si la variable globale _Module est toujours requise.

Il y a quelques années, lorsque j'ai commencé à travailler avec WTL, il était nécessaire (au moins pour ATL 3.0) de définir une variable globale telle que:

CAppModule _Module;

Pour que ATL fonctionne correctement. Mais récemment, j'ai lu quelque part que cela pourrait ne plus être nécessaire (mais le code généré par l'assistant l'utilise toujours). De plus, j’ai effectué une recherche dans les répertoires d’inclusion Visual C ++ et il n’a récupéré que _Module à quelques endroits, notamment le registre ATL COM.

Dois-je toujours définir une variable globale pour utiliser ATL ces jours-ci?

Était-ce utile?

La solution

Techniquement, vous n'avez pas besoin d'une instance globale _Module depuis ATL / WTL version 7. Le code ATL / WTL antérieur référencé _Module par ce nom spécifique et vous demandait de déclarer une seule instance de cet objet. Cet objet a depuis été remplacé par un objet d'instance unique nommé _AtlBaseModule qui est automatiquement déclaré pour vous dans atlcore.h.

Ceci étant dit, CAppModule et sa classe de base CComModule contiennent certaines des meilleures fonctionnalités WTL. Enregistrement COM automatique, gestion des boucles de messages, etc. Ainsi, la plupart des applications non triviales basées sur WTL voudront toujours une instance singleton d'une classe de base CComModule. Cependant, il n'est pas nécessaire de l'appeler _Module .

Autres conseils

Ceci est toujours utilisé dans les exemples de projets de la dernière version de WTL.

Dans stdafx.h:

extern CAppModule _Module;

Dans les fichiers d'implémentation:

CAppModule _Module;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top