Ist ATL / WTL erfordern immer noch die Verwendung eines globalen _Module Variable?

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

  •  10-07-2019
  •  | 
  •  

Frage

Ich fange gerade ein neues ATL / WTL Projekt und ich frage mich, ob die globale Variable _Module noch erforderlich?

ein paar Jahren, als ich anfing mit WTL Arbeits es erforderlich war (zumindest für ATL 3.0), die Sie eine globale Variable definieren, wie:

CAppModule _Module;

Um ATL richtig zu arbeiten. Aber in letzter Zeit habe ich irgendwo gelesen, dass dies möglicherweise nicht mehr benötigt werden (noch der Assistent generierte Code noch verwendet es). Ich habe auch eine Suche über die Visual C ++ Verzeichnisse enthalten und es nahm nur _Module an einigen Stellen bereits -. Vor allem der ATL COM-Registrierung Sachen

So tun noch ich brauche eine globale Variable zu definieren, ATL zu verwenden, in diesen Tagen?

War es hilfreich?

Lösung

Technisch Sie brauchen nicht eine globale _Module Instanz seit ATL / WTL Version 7. Frühere ATL / WTL Code verwiesen _Module von diesem bestimmten Namen und Sie erwartet eine einzelne Instanz dieses Objekts zu erklären. Dies ist inzwischen durch ein einziges Instanz-Objekt namens _AtlBaseModule ersetzt worden, die automatisch für Sie in atlcore.h deklariert wird.

Having said that, obwohl, einige der besten WTL Funktionen innerhalb CAppModule und seine Basisklasse CComModule enthalten. Automatische COM-Registrierung Nachrichtenschleife Handhabung usw. So sind die meisten nicht-trivialen WTL-basierte Anwendungen wollen immer noch eine einzelne Instanz einer CComModule Basisklasse. Allerdings braucht es nicht genannt _Module werden.

Andere Tipps

In den Beispielprojekten der neuesten WTL-Version wird diese noch verwendet wird.

In stdafx.h:

extern CAppModule _Module;

In Implementierungsdateien:

CAppModule _Module;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top