Delen via


CAtlExeModuleT-klasse

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse vertegenwoordigt de module voor een toepassing.

Syntaxis

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>

Parameterwaarden

T
Uw klasse is afgeleid van CAtlExeModuleT.

Leden

Openbare constructors

Naam Description
CAtlExeModuleT::CAtlExeModuleT De constructor.
CAtlExeModuleT::~CAtlExeModuleT De destructor.

Openbare methoden

Naam Description
CAtlExeModuleT::InitializeCom Initialiseert COM.
CAtlExeModuleT::P arseCommandLine Parseert de opdrachtregel en voert zo nodig registratie uit.
CAtlExeModuleT::P ostMessageLoop Deze methode wordt onmiddellijk aangeroepen nadat de berichtenlus is afgesloten.
CAtlExeModuleT::P reMessageLoop Deze methode wordt onmiddellijk aangeroepen voordat u de berichtenlus invoert.
CAtlExeModuleT::RegisterClassObjects Registreert het klasseobject.
CAtlExeModuleT::RevokeClassObjects Hiermee wordt het klasseobject ingetrokken.
CAtlExeModuleT::Run Met deze methode wordt code uitgevoerd in de EXE-module om de berichtlus te initialiseren, uit te voeren en op te schonen.
CAtlExeModuleT::RunMessageLoop Met deze methode wordt de berichtenlus uitgevoerd.
CAtlExeModuleT::UninitializeCom Com niet geïnitialiseerd.
CAtlExeModuleT::Unlock Hiermee wordt het aantal vergrendelingen van de module afgerekend.
CAtlExeModuleT::WinMain Met deze methode wordt de code geïmplementeerd die is vereist voor het uitvoeren van een EXE.

Publieke dataleden

Naam Description
CAtlExeModuleT::m_bDelayShutdown Een vlag die aangeeft dat er een vertraging moet zijn bij het afsluiten van de module.
CAtlExeModuleT::m_dwPause Een onderbrekingswaarde die wordt gebruikt om ervoor te zorgen dat alle objecten worden vrijgegeven voordat ze worden afgesloten.
CAtlExeModuleT::m_dwTimeOut Een time-outwaarde die wordt gebruikt om het lossen van de module uit te stellen.

Opmerkingen

CAtlExeModuleT vertegenwoordigt de module voor een toepassing (EXE) en bevat code die ondersteuning biedt voor het maken van een EXE, het verwerken van de opdrachtregel, het registreren van klasseobjecten, het uitvoeren van de berichtlus en het opschonen bij afsluiten.

Deze klasse is ontworpen om de prestaties te verbeteren wanneer COM-objecten op de EXE-server voortdurend worden gemaakt en vernietigd. Nadat het laatste COM-object is uitgebracht, wacht de EXE op een duur die is opgegeven door het gegevenslid CAtlExeModuleT::m_dwTimeOut . Als er tijdens deze periode geen activiteit is (dat wil gezegd dat er geen COM-objecten worden gemaakt), wordt het afsluitproces gestart.

Het gegevenslid CAtlExeModuleT::m_bDelayShutdown is een vlag die wordt gebruikt om te bepalen of de EXE het hierboven gedefinieerde mechanisme moet gebruiken. Als deze is ingesteld op false, wordt de module onmiddellijk beëindigd.

Zie ATL-moduleklassen voor meer informatie over modules in ATL.

Overnamehiërarchie

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Requirements

Header: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

De constructor.

CAtlExeModuleT() throw();

Opmerkingen

Als de EXE-module niet kan worden geïnitialiseerd, wordt WinMain onmiddellijk geretourneerd zonder verdere verwerking.

CAtlExeModuleT::~CAtlExeModuleT

De destructor.

~CAtlExeModuleT() throw();

Opmerkingen

Alle toegewezen resources worden vrijgemaakt.

CAtlExeModuleT::InitializeCom

Initialiseert COM.

static HRESULT InitializeCom() throw();

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Opmerkingen

Deze methode wordt aangeroepen vanuit de constructor en kan worden overschreven om COM op een andere manier te initialiseren dan de standaard implementatie. De standaard implementatie roept aan CoInitializeEx(NULL, COINIT_MULTITHREADED) of CoInitialize(NULL) is afhankelijk van de projectconfiguratie.

Voor het overschrijven van deze methode is normaal gesproken het overschrijven van CAtlExeModuleT:::UninitializeCom vereist.

CAtlExeModuleT::m_bDelayShutdown

Een vlag die aangeeft dat er een vertraging moet zijn bij het afsluiten van de module.

bool m_bDelayShutdown;

Opmerkingen

Zie het overzicht van CAtlExeModuleT voor meer informatie.

CAtlExeModuleT::m_dwPause

Een onderbrekingswaarde die wordt gebruikt om ervoor te zorgen dat alle objecten zijn verdwenen voordat ze worden afgesloten.

DWORD m_dwPause;

Opmerkingen

Wijzig deze waarde na het aanroepen van CAtlExeModuleT::InitializeCom om het aantal milliseconden in te stellen dat wordt gebruikt als de onderbrekingswaarde voor het afsluiten van de server. De standaardwaarde is 1000 milliseconden.

CAtlExeModuleT::m_dwTimeOut

Een time-outwaarde die wordt gebruikt om het lossen van de module uit te stellen.

DWORD m_dwTimeOut;

Opmerkingen

Wijzig deze waarde na het aanroepen van CAtlExeModuleT::InitializeCom om het aantal milliseconden te definiëren dat wordt gebruikt als time-outwaarde voor het afsluiten van de server. De standaardwaarde is 5000 milliseconden. Zie het overzicht van CAtlExeModuleT voor meer informatie.

CAtlExeModuleT::P arseCommandLine

Parseert de opdrachtregel en voert zo nodig registratie uit.

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

Parameterwaarden

lpCmdLine
De opdrachtregel doorgegeven aan de toepassing.

pnRetCode
Het HRESULT dat overeenkomt met de registratie (indien deze plaatsvond).

Retourwaarde

Retourneer waar als de toepassing moet blijven worden uitgevoerd, anders onwaar.

Opmerkingen

Deze methode wordt aangeroepen vanuit CAtlExeModuleT::WinMain en kan worden overschreven om opdrachtregelopties te verwerken. De standaard implementatie controleert op opdrachtregelargumenten /RegServer en /UnRegServer en voert registratie of registratie uit.

CAtlExeModuleT::P ostMessageLoop

Deze methode wordt onmiddellijk aangeroepen nadat de berichtenlus is afgesloten.

HRESULT PostMessageLoop() throw();

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Opmerkingen

Overschrijf deze methode om aangepaste toepassingsopruiming uit te voeren. De standaard implementatie roept CAtlExeModuleT::RevokeClassObjects aan.

CAtlExeModuleT::P reMessageLoop

Deze methode wordt onmiddellijk aangeroepen voordat u de berichtenlus invoert.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parameterwaarden

nShowCmd
De waarde die is doorgegeven als de parameter nShowCmd in WinMain.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Opmerkingen

Overschrijf deze methode om aangepaste initialisatiecode voor de toepassing toe te voegen. De standaard implementatie registreert de klasseobjecten.

CAtlExeModuleT::RegisterClassObjects

Registreert het klasseobject met OLE, zodat andere toepassingen er verbinding mee kunnen maken.

HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();

Parameterwaarden

dwClsContext
Hiermee geeft u de context op waarin het klasseobject moet worden uitgevoerd. Mogelijke waarden zijn CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER of CLSCTX_LOCAL_SERVER.

dwFlags
Bepaalt de verbindingstypen voor het klasseobject. Mogelijke waarden zijn REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE of REGCLS_MULTI_SEPARATE.

Retourwaarde

Retourneert S_OK over succes, S_FALSE als er geen klassen zijn om te registreren of een fout HRESULT bij fout.

CAtlExeModuleT::RevokeClassObjects

Hiermee verwijdert u het klasseobject.

HRESULT RevokeClassObjects() throw();

Retourwaarde

Retourneert S_OK over succes, S_FALSE als er geen klassen zijn om te registreren of een fout HRESULT bij fout.

CAtlExeModuleT::Run

Met deze methode wordt code uitgevoerd in de EXE-module om de berichtlus te initialiseren, uit te voeren en op te schonen.

HRESULT Run(int nShowCmd = SW_HIDE) throw();

Parameterwaarden

nShowCmd
Hiermee geeft u op hoe het venster moet worden weergegeven. Deze parameter kan een van de waarden zijn die worden besproken in de sectie WinMain . Standaard ingesteld op SW_HIDE.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Opmerkingen

Deze methode kan worden overschreven. In de praktijk is het echter beter om CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop of CAtlExeModuleT::P ostMessageLoop te overschrijven.

CAtlExeModuleT::RunMessageLoop

Met deze methode wordt de berichtenlus uitgevoerd.

void RunMessageLoop() throw();

Opmerkingen

Deze methode kan worden overschreven om het gedrag van de berichtenlus te wijzigen.

CAtlExeModuleT::UninitializeCom

Com niet geïnitialiseerd.

static void UninitializeCom() throw();

Opmerkingen

Deze methode roept standaard CoUninitialize aan en wordt aangeroepen vanuit de destructor. Overschrijf deze methode als u CAtlExeModuleT::InitializeCom overschrijft.

CAtlExeModuleT::Unlock

Hiermee wordt het aantal vergrendelingen van de module afgerekend.

LONG Unlock() throw();

Retourwaarde

Retourneert een waarde die nuttig kan zijn voor diagnostische gegevens of tests.

CAtlExeModuleT::WinMain

Met deze methode wordt de code geïmplementeerd die is vereist voor het uitvoeren van een EXE.

int WinMain(int nShowCmd) throw();

Parameterwaarden

nShowCmd
Hiermee geeft u op hoe het venster moet worden weergegeven. Deze parameter kan een van de waarden zijn die worden besproken in de sectie WinMain .

Retourwaarde

Retourneert de retourwaarde van het uitvoerbare bestand.

Opmerkingen

Deze methode kan worden overschreven. Als CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop of CAtlExeModuleT::RunMessageLoop onvoldoende flexibiliteit biedt, is het mogelijk om de WinMain functie met deze methode te overschrijven.

Zie ook

ATLDuck-voorbeeld
CAtlModuleT-klasse
CAtlDllModuleT-klasse
Overzicht van klassen