CAtlExeModuleT, classe

Cette classe représente le module d’une application.

Syntaxe

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

Paramètres

T
Votre classe dérivée de CAtlExeModuleT.

Membres

Constructeurs publics

Nom Description
CAtlExeModuleT ::CAtlExeModuleT Constructeur .
CAtlExeModuleT ::~CAtlExeModuleT Destructeur.

Méthodes publiques

Nom Description
CAtlExeModuleT ::InitializeCom Initialise COM.
CAtlExeModuleT ::P arseCommandLine Analyse la ligne de commande et effectue l’inscription si nécessaire.
CAtlExeModuleT ::P ostMessageLoop Cette méthode est appelée immédiatement après la sortie de la boucle de message.
CAtlExeModuleT ::P reMessageLoop Cette méthode est appelée immédiatement avant d’entrer la boucle de message.
CAtlExeModuleT ::RegisterClassObjects Inscrit l’objet de classe.
CAtlExeModuleT ::RevokeClassObjects Révoque l’objet de classe.
CAtlExeModuleT ::Run Cette méthode exécute du code dans le module EXE pour initialiser, exécuter la boucle de message et nettoyer.
CAtlExeModuleT ::RunMessageLoop Cette méthode exécute la boucle de message.
CAtlExeModuleT ::UninitializeCom Non initialise COM.
CAtlExeModuleT ::Unlock Décrémente le nombre de verrous du module.
CAtlExeModuleT ::WinMain Cette méthode implémente le code requis pour exécuter un EXE.

Membres de données publics

Nom Description
CAtlExeModuleT ::m_bDelayShutdown Indicateur indiquant qu’il doit y avoir un délai d’arrêt du module.
CAtlExeModuleT ::m_dwPause Valeur de pause utilisée pour vérifier que tous les objets sont libérés avant l’arrêt.
CAtlExeModuleT ::m_dwTimeOut Valeur de délai d’attente utilisée pour retarder le déchargement du module.

Notes

CAtlExeModuleT représente le module d’une application (EXE) et contient du code qui prend en charge la création d’un EXE, le traitement de la ligne de commande, l’inscription d’objets de classe, l’exécution de la boucle de message et le nettoyage à la sortie.

Cette classe est conçue pour améliorer les performances lorsque les objets COM du serveur EXE sont continuellement créés et détruits. Une fois le dernier objet COM libéré, l’EXE attend une durée spécifiée par le membre de données CAtlExeModuleT ::m_dwTimeOut . S’il n’existe aucune activité pendant cette période (autrement dit, aucun objet COM n’est créé), le processus d’arrêt est lancé.

Le membre de données CAtlExeModuleT ::m_bDelayShutdown est un indicateur utilisé pour déterminer si l’EXE doit utiliser le mécanisme défini ci-dessus. S’il est défini sur false, le module se termine immédiatement.

Pour plus d’informations sur les modules dans ATL, consultez les classes de module ATL.

Hiérarchie d'héritage

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Spécifications

En-tête : atlbase.h

CAtlExeModuleT ::CAtlExeModuleT

Constructeur .

CAtlExeModuleT() throw();

Notes

Si le module EXE n’a pas pu être initialisé, WinMain retourne immédiatement sans traitement supplémentaire.

CAtlExeModuleT ::~CAtlExeModuleT

Destructeur.

~CAtlExeModuleT() throw();

Notes

Libère toutes les ressources allouées.

CAtlExeModuleT ::InitializeCom

Initialise COM.

static HRESULT InitializeCom() throw();

Valeur de retour

Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Cette méthode est appelée à partir du constructeur et peut être substituée pour initialiser COM d’une manière différente de l’implémentation par défaut. L’implémentation par défaut appelle CoInitializeEx(NULL, COINIT_MULTITHREADED) ou CoInitialize(NULL) dépend de la configuration du projet.

La substitution de cette méthode nécessite normalement la substitution de CAtlExeModuleT ::UninitializeCom.

CAtlExeModuleT ::m_bDelayShutdown

Indicateur indiquant qu’il doit y avoir un délai d’arrêt du module.

bool m_bDelayShutdown;

Notes

Pour plus d’informations, consultez la vue d’ensemble de CAtlExeModuleT.

CAtlExeModuleT ::m_dwPause

Valeur de pause utilisée pour s’assurer que tous les objets sont partis avant l’arrêt.

DWORD m_dwPause;

Notes

Modifiez cette valeur après avoir appelé CAtlExeModuleT ::InitializeCom pour définir le nombre de millisecondes utilisées comme valeur de pause pour arrêter le serveur. La valeur par défaut est de 1 000 millisecondes.

CAtlExeModuleT ::m_dwTimeOut

Valeur de délai d’attente utilisée pour retarder le déchargement du module.

DWORD m_dwTimeOut;

Notes

Modifiez cette valeur après avoir appelé CAtlExeModuleT ::InitializeCom pour définir le nombre de millisecondes utilisées comme valeur de délai d’attente pour arrêter le serveur. La valeur par défaut est 5 000 millisecondes. Pour plus d’informations, consultez la vue d’ensemble de CAtlExeModuleT.

CAtlExeModuleT ::P arseCommandLine

Analyse la ligne de commande et effectue l’inscription si nécessaire.

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

Paramètres

lpCmdLine
Ligne de commande transmise à l’application.

pnRetCode
HRESULT correspondant à l’inscription (si elle a eu lieu).

Valeur de retour

Retourne la valeur true si l’application doit continuer à s’exécuter, sinon false.

Notes

Cette méthode est appelée à partir de CAtlExeModuleT ::WinMain et peut être remplacée pour gérer les commutateurs de ligne de commande. L’implémentation par défaut vérifie les arguments de ligne de commande /RegServer et /UnRegServer et effectue l’inscription ou l’annulation de l’inscription.

CAtlExeModuleT ::P ostMessageLoop

Cette méthode est appelée immédiatement après la sortie de la boucle de message.

HRESULT PostMessageLoop() throw();

Valeur de retour

Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Remplacez cette méthode pour effectuer un nettoyage d’application personnalisé. L’implémentation par défaut appelle CAtlExeModuleT ::RevokeClassObjects.

CAtlExeModuleT ::P reMessageLoop

Cette méthode est appelée immédiatement avant d’entrer la boucle de message.

HRESULT PreMessageLoop(int nShowCmd) throw();

Paramètres

nShowCmd
Valeur passée en tant que paramètre nShowCmd dans WinMain.

Valeur de retour

Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Remplacez cette méthode pour ajouter du code d’initialisation personnalisé pour l’application. L’implémentation par défaut inscrit les objets de classe.

CAtlExeModuleT ::RegisterClassObjects

Inscrit l’objet de classe auprès d’OLE afin que d’autres applications puissent y se connecter.

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

Paramètres

dwClsContext
Spécifie le contexte dans lequel l’objet de classe doit être exécuté. Les valeurs possibles sont CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER ou CLSCTX_LOCAL_SERVER.

dwFlags
Détermine les types de connexion à l’objet de classe. Les valeurs possibles sont REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE ou REGCLS_MULTI_SEPARATE.

Valeur de retour

Retourne S_OK en cas de réussite, S_FALSE s’il n’y avait aucune classe à inscrire ou une erreur HRESULT en cas d’échec.

CAtlExeModuleT ::RevokeClassObjects

Supprime l’objet de classe.

HRESULT RevokeClassObjects() throw();

Valeur de retour

Retourne S_OK en cas de réussite, S_FALSE s’il n’y avait aucune classe à inscrire ou une erreur HRESULT en cas d’échec.

CAtlExeModuleT ::Run

Cette méthode exécute du code dans le module EXE pour initialiser, exécuter la boucle de message et nettoyer.

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

Paramètres

nShowCmd
Spécifie la façon dont la fenêtre doit être affichée. Ce paramètre peut être l’une des valeurs décrites dans la section WinMain . La valeur par défaut est SW_HIDE.

Valeur de retour

Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Cette méthode peut être substituée. Toutefois, dans la pratique, il est préférable de remplacer CAtlExeModuleT ::P reMessageLoop, CAtlExeModuleT ::RunMessageLoop ou CAtlExeModuleT ::P ostMessageLoop à la place.

CAtlExeModuleT ::RunMessageLoop

Cette méthode exécute la boucle de message.

void RunMessageLoop() throw();

Notes

Cette méthode peut être substituée pour modifier le comportement de la boucle de message.

CAtlExeModuleT ::UninitializeCom

Non initialise COM.

static void UninitializeCom() throw();

Notes

Par défaut, cette méthode appelle simplement CoUninitialize et est appelée à partir du destructeur. Remplacez cette méthode si vous remplacez CAtlExeModuleT ::InitializeCom.

CAtlExeModuleT ::Unlock

Décrémente le nombre de verrous du module.

LONG Unlock() throw();

Valeur de retour

Retourne une valeur qui peut être utile pour les diagnostics ou les tests.

CAtlExeModuleT ::WinMain

Cette méthode implémente le code requis pour exécuter un EXE.

int WinMain(int nShowCmd) throw();

Paramètres

nShowCmd
Spécifie la façon dont la fenêtre doit être affichée. Ce paramètre peut être l’une des valeurs décrites dans la section WinMain .

Valeur de retour

Retourne la valeur de retour de l’exécutable.

Notes

Cette méthode peut être substituée. Si vous substituez CAtlExeModuleT ::P reMessageLoop, CAtlExeModuleT ::P ostMessageLoop ou CAtlExeModuleT ::RunMessageLoop ne fournit pas suffisamment de flexibilité, il est possible de remplacer la fonction à l’aide WinMain de cette méthode.

Voir aussi

Exemple ATLDuck
CAtlModuleT, classe
CAtlDllModuleT, classe
Vue d’ensemble de la classe