CAtlExeModuleT-Klasse
Diese Klasse stellt das Modul für eine Anwendung dar.
Syntax
template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>
Parameter
T
Ihre klasse abgeleitet von CAtlExeModuleT
.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CAtlExeModuleT::CAtlExeModuleT | Der Konstruktor. |
CAtlExeModuleT::~CAtlExeModuleT | Der Destruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CAtlExeModuleT::InitializeCom | Initialisiert COM. |
CAtlExeModuleT::P arseCommandLine | Analysiert die Befehlszeile und führt bei Bedarf eine Registrierung durch. |
CAtlExeModuleT::P ostMessageLoop | Diese Methode wird unmittelbar nach dem Beenden der Nachrichtenschleife aufgerufen. |
CAtlExeModuleT::P reMessageLoop | Diese Methode wird unmittelbar vor dem Eingeben der Nachrichtenschleife aufgerufen. |
CAtlExeModuleT::RegisterClassObjects | Registriert das Klassenobjekt. |
CAtlExeModuleT::RevokeClassObjects | Widerruft das Klassenobjekt. |
CAtlExeModuleT::Run | Diese Methode führt Code im EXE-Modul aus, um die Nachrichtenschleife zu initialisieren, auszuführen und zu bereinigen. |
CAtlExeModuleT::RunMessageLoop | Diese Methode führt die Nachrichtenschleife aus. |
CAtlExeModuleT::UninitializeCom | Hebt COM-Initialisierung auf. |
CAtlExeModuleT::Unlock | Erhöht die Sperranzahl des Moduls. |
CAtlExeModuleT::WinMain | Diese Methode implementiert den code, der zum Ausführen einer EXE erforderlich ist. |
Öffentliche Datenmember
Name | Beschreibung |
---|---|
CAtlExeModuleT::m_bDelayShutdown | Ein Kennzeichen, das angibt, dass es eine Verzögerung beim Herunterfahren des Moduls geben sollte. |
CAtlExeModuleT::m_dwPause | Ein Pausenwert, der verwendet wird, um sicherzustellen, dass alle Objekte vor dem Herunterfahren freigegeben werden. |
CAtlExeModuleT::m_dwTimeOut | Ein Timeoutwert, der verwendet wird, um die Entladung des Moduls zu verzögern. |
Hinweise
CAtlExeModuleT
stellt das Modul für eine Anwendung (EXE) dar und enthält Code, der das Erstellen einer EXE unterstützt, die Befehlszeile verarbeitet, Klassenobjekte registriert, die Meldungsschleife ausgeführt und beim Beenden bereinigt wird.
Diese Klasse wurde entwickelt, um die Leistung zu verbessern, wenn COM-Objekte auf dem EXE-Server ständig erstellt und zerstört werden. Nachdem das letzte COM-Objekt freigegeben wurde, wartet die EXE-Datei auf eine vom CAtlExeModuleT::m_dwTimeOut-Datenmemmemm angegebene Dauer. Wenn während dieses Zeitraums keine Aktivität vorhanden ist (d. h., es werden keine COM-Objekte erstellt), wird der Herunterfahrensprozess initiiert.
Das CAtlExeModuleT::m_bDelayShutdown-Datenelement ist ein Flag, das verwendet wird, um festzustellen, ob die EXE den oben definierten Mechanismus verwenden soll. Wenn sie auf "false" festgelegt ist, wird das Modul sofort beendet.
Weitere Informationen zu Modulen in ATL finden Sie unter ATL-Modulklassen.
Vererbungshierarchie
CAtlExeModuleT
Anforderungen
Kopfzeile: atlbase.h
CAtlExeModuleT::CAtlExeModuleT
Der Konstruktor.
CAtlExeModuleT() throw();
Hinweise
Wenn das EXE-Modul nicht initialisiert werden konnte, wird WinMain sofort ohne weitere Verarbeitung zurückgegeben.
CAtlExeModuleT::~CAtlExeModuleT
Der Destruktor.
~CAtlExeModuleT() throw();
Hinweise
Gibt alle zugeordneten Ressourcen frei.
CAtlExeModuleT::InitializeCom
Initialisiert COM.
static HRESULT InitializeCom() throw();
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Hinweise
Diese Methode wird vom Konstruktor aufgerufen und kann überschrieben werden, um COM auf eine andere Weise als die Standardimplementierung zu initialisieren. Die Standardimplementierung ruft entweder aufruft CoInitializeEx(NULL, COINIT_MULTITHREADED)
oder CoInitialize(NULL)
abhängig von der Projektkonfiguration auf.
Das Überschreiben dieser Methode erfordert normalerweise das Überschreiben von CAtlExeModuleT::UninitializeCom.
CAtlExeModuleT::m_bDelayShutdown
Ein Kennzeichen, das angibt, dass es eine Verzögerung beim Herunterfahren des Moduls geben sollte.
bool m_bDelayShutdown;
Hinweise
Weitere Informationen finden Sie in der CAtlExeModuleT-Übersicht .
CAtlExeModuleT::m_dwPause
Ein Pausenwert, der verwendet wird, um sicherzustellen, dass alle Objekte vor dem Herunterfahren nicht mehr vorhanden sind.
DWORD m_dwPause;
Hinweise
Ändern Sie diesen Wert nach dem Aufruf von CAtlExeModuleT::InitializeCom , um die Anzahl von Millisekunden festzulegen, die als Pausenwert zum Herunterfahren des Servers verwendet wird. Der Standardwert ist 1000 Millisekunden.
CAtlExeModuleT::m_dwTimeOut
Ein Timeoutwert, der verwendet wird, um die Entladung des Moduls zu verzögern.
DWORD m_dwTimeOut;
Hinweise
Ändern Sie diesen Wert nach dem Aufruf von CAtlExeModuleT::InitializeCom , um die Anzahl von Millisekunden zu definieren, die als Timeoutwert zum Herunterfahren des Servers verwendet wird. Der Standardwert ist 5000 Millisekunden. Weitere Details finden Sie in der CAtlExeModuleT-Übersicht .
CAtlExeModuleT::P arseCommandLine
Analysiert die Befehlszeile und führt bei Bedarf eine Registrierung durch.
bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();
Parameter
lpCmdLine
Die Befehlszeile, die an die Anwendung übergeben wird.
pnRetCode
Das HRESULT, das der Registrierung entspricht (sofern die Registrierung erfolgt ist).
Rückgabewert
Gibt "true" zurück, wenn die Anwendung weiterhin ausgeführt werden soll, andernfalls "false".
Hinweise
Diese Methode wird von CAtlExeModuleT::WinMain aufgerufen und kann überschrieben werden, um Befehlszeilenoptionen zu verarbeiten. Die Standardimplementierung überprüft auf /RegServer- und /UnRegServer-Befehlszeilenargumente und führt Registrierung oder Registrierung durch.
CAtlExeModuleT::P ostMessageLoop
Diese Methode wird unmittelbar nach dem Beenden der Nachrichtenschleife aufgerufen.
HRESULT PostMessageLoop() throw();
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Hinweise
Überschreiben Sie diese Methode, um eine benutzerdefinierte Anwendungsbereinigung durchzuführen. Die Standardimplementierung ruft CAtlExeModuleT::RevokeClassObjects auf.
CAtlExeModuleT::P reMessageLoop
Diese Methode wird unmittelbar vor dem Eingeben der Nachrichtenschleife aufgerufen.
HRESULT PreMessageLoop(int nShowCmd) throw();
Parameter
nShowCmd
Der Als nShowCmd-Parameter in WinMain übergebene Wert.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Hinweise
Überschreiben Sie diese Methode, um benutzerdefinierten Initialisierungscode für die Anwendung hinzuzufügen. Die Standardimplementierung registriert die Klassenobjekte.
CAtlExeModuleT::RegisterClassObjects
Registriert das Klassenobjekt mit OLE, damit andere Anwendungen eine Verbindung damit herstellen können.
HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();
Parameter
dwClsContext
Gibt den Kontext an, in dem das Klassenobjekt ausgeführt werden soll. Mögliche Werte sind CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER oder CLSCTX_LOCAL_SERVER.
dwFlags
Bestimmt die Verbindungstypen mit dem Klassenobjekt. Mögliche Werte sind REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE oder REGCLS_MULTI_SEPARATE.
Rückgabewert
Gibt S_OK bei Erfolg zurück, S_FALSE, wenn keine Klassen registriert werden sollen, oder ein HRESULT-Fehler beim Fehler.
CAtlExeModuleT::RevokeClassObjects
Entfernt das Klassenobjekt.
HRESULT RevokeClassObjects() throw();
Rückgabewert
Gibt S_OK bei Erfolg zurück, S_FALSE, wenn keine Klassen registriert werden sollen, oder ein HRESULT-Fehler beim Fehler.
CAtlExeModuleT::Run
Diese Methode führt Code im EXE-Modul aus, um die Nachrichtenschleife zu initialisieren, auszuführen und zu bereinigen.
HRESULT Run(int nShowCmd = SW_HIDE) throw();
Parameter
nShowCmd
Gibt an, wie das Fenster angezeigt werden soll. Dieser Parameter kann einer der werte sein, die im Abschnitt "WinMain " erläutert werden. Standardmäßig wird SW_HIDE.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Hinweise
Diese Methode kann überschrieben werden. In der Praxis ist es jedoch besser, CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop oder CAtlExeModuleT::P ostMessageLoop zu überschreiben.
CAtlExeModuleT::RunMessageLoop
Diese Methode führt die Nachrichtenschleife aus.
void RunMessageLoop() throw();
Hinweise
Diese Methode kann überschrieben werden, um das Verhalten der Nachrichtenschleife zu ändern.
CAtlExeModuleT::UninitializeCom
Hebt COM-Initialisierung auf.
static void UninitializeCom() throw();
Hinweise
Standardmäßig ruft diese Methode einfach CoUninitialize auf und wird vom Destruktor aufgerufen. Überschreiben Sie diese Methode, wenn Sie CAtlExeModuleT::InitializeCom überschreiben.
CAtlExeModuleT::Unlock
Erhöht die Sperranzahl des Moduls.
LONG Unlock() throw();
Rückgabewert
Gibt einen Wert zurück, der für Diagnosen oder Tests nützlich sein kann.
CAtlExeModuleT::WinMain
Diese Methode implementiert den code, der zum Ausführen einer EXE erforderlich ist.
int WinMain(int nShowCmd) throw();
Parameter
nShowCmd
Gibt an, wie das Fenster angezeigt werden soll. Dieser Parameter kann einer der werte sein, die im Abschnitt "WinMain " erläutert werden.
Rückgabewert
Gibt den Rückgabewert der ausführbaren Datei zurück.
Hinweise
Diese Methode kann überschrieben werden. Wenn das Überschreiben von CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop oder CAtlExeModuleT::RunMessageLoop nicht genügend Flexibilität bietet, ist es möglich, die WinMain
Funktion mithilfe dieser Methode außer Kraft zu setzen.
Siehe auch
ATLDuck-Beispiel
CAtlModuleT-Klasse
CAtlDllModuleT-Klasse
Klassenübersicht