// [!output DIALOG_AUTO_PROXY_IMPL] : fichier d'implémentation // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output DIALOG_AUTO_PROXY_HEADER]" #include "[!output DIALOG_HEADER]" #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output DIALOG_AUTO_PROXY_CLASS] IMPLEMENT_DYNCREATE([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) [!output DIALOG_AUTO_PROXY_CLASS]::[!output DIALOG_AUTO_PROXY_CLASS]() { EnableAutomation(); // Pour que l'application continue de s'exécuter tant qu'un objet Automation // est actif, le constructeur appelle AfxOleLockApp. AfxOleLockApp(); // Accéder à la boîte de dialogue par l'intermédiaire du pointeur // de la fenêtre principale de l'application. Définir le pointeur interne du proxy // pour qu'il pointe vers la boîte de dialogue, et définir le pointeur de retour de la boîte de dialogue pour qu'il pointe vers // ce proxy. ASSERT_VALID(AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd) { ASSERT_KINDOF([!output DIALOG_CLASS], AfxGetApp()->m_pMainWnd); if (AfxGetApp()->m_pMainWnd->IsKindOf(RUNTIME_CLASS([!output DIALOG_CLASS]))) { m_pDialog = reinterpret_cast<[!output DIALOG_CLASS]*>(AfxGetApp()->m_pMainWnd); m_pDialog->m_pAutoProxy = this; } } } [!output DIALOG_AUTO_PROXY_CLASS]::~[!output DIALOG_AUTO_PROXY_CLASS]() { // Pour mettre fin à l'application lorsque tous les objets ont été créés // avec automation, le destructeur appelle AfxOleUnlockApp. // Cela aura notamment pour effet de détruire la boîte de dialogue principale if (m_pDialog != NULL) m_pDialog->m_pAutoProxy = NULL; AfxOleUnlockApp(); } void [!output DIALOG_AUTO_PROXY_CLASS]::OnFinalRelease() { // Lorsque la dernière référence pour un objet automation est libérée // OnFinalRelease est appelé. La classe de base supprime automatiquement // l'objet. Un nettoyage supplémentaire est requis pour votre // objet avant d'appeler la classe de base. [!output DIALOG_AUTO_PROXY_BASE_CLASS]::OnFinalRelease(); } BEGIN_MESSAGE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_MESSAGE_MAP() BEGIN_DISPATCH_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) END_DISPATCH_MAP() // Remarque : La prise en charge de IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] a été ajoutée afin de prendre en charge la liaison de type sécurisé // à partir de VBA. Cet IID doit correspondre au GUID qui est attaché à // dispinterface dans le fichier .IDL. // {[!output DISPIID_REGISTRY_FORMAT]} static const IID IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME] = [!output DISPIID_STATIC_CONST_GUID_FORMAT]; BEGIN_INTERFACE_MAP([!output DIALOG_AUTO_PROXY_CLASS], [!output DIALOG_AUTO_PROXY_BASE_CLASS]) INTERFACE_PART([!output DIALOG_AUTO_PROXY_CLASS], IID_I[!output SAFE_PROJECT_IDENTIFIER_NAME], Dispatch) END_INTERFACE_MAP() // La macro IMPLEMENT_OLECREATE2 est définie dans le fichier StdAfx.h de ce projet // {[!output APP_CLSID_REGISTRY_FORMAT]} IMPLEMENT_OLECREATE2([!output DIALOG_AUTO_PROXY_CLASS], "[!output SAFE_PROJECT_IDENTIFIER_NAME].Application", [!output APP_CLSID_IMPLEMENT_OLECREATE_FORMAT]) // gestionnaires de messages pour [!output DIALOG_AUTO_PROXY_CLASS]