Partager via


AfxTermExtensionModule

Appelez cette fonction pour permettr à MFC de nettoyer la DLL d'extension chaque fois qu'un processus se détache de la DLL d'extension (ce qui se produit lors de la sortie du processus ou quand la DLL est déchargée à la suite d'un appel à AfxFreeLibrary).

void AFXAPI AfxTermExtensionModule( 
   AFX_EXTENSION_MODULE& state, 
   BOOL bAll  = FALSE  
);

Paramètres

  • state
    Une référence à la structure AFX_EXTENSION_MODULE qui contient l'état du module DLL d'extension.

  • boule
    Si TRUE, nettoyage des modules de DLL d'extension. Sinon, nettoyage uniquement du module DLL actuel.

Notes

AfxTermExtensionModule supprime tout stockage local associé au module et supprime toutes les entrées du cache de la table des messages. Par exemple :

static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    // Remove this if you use lpReserved
    UNREFERENCED_PARAMETER(lpReserved);

    if (dwReason == DLL_PROCESS_ATTACH)
    {
        TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
        
        // Extension DLL one-time initialization 
        if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
            return 0;

        new CMyDynLinkLibrary(NVC_MFC_DLLDLL);

    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
        TRACE0("NVC_MFC_DLL.DLL Terminating!\n");

        // Terminate the library before destructors are called
        AfxTermExtensionModule(NVC_MFC_DLLDLL);
    }
    return 1;   // ok
}

Si votre application charge et libère les DLL d'extension dynamiquement, veillez à appeler AfxTermExtensionModule. Comme la plupart des DLL d'extension ne sont pas chargés dynamiquement (généralement, ils sont liés via les bibliothèques d'importation), l'appel à AfxTermExtensionModule n'est généralement pas nécessaire.

Les DLL d'extension de MFC doivent appeler AfxInitExtensionModule dans leur DllMain. Si la DLL exporte des objets de CRuntimeClass ou possède ses propres ressources personnalisées, vous devez également créer un objet de CDynLinkLibrary dans DllMain.

Configuration requise

En-tête : afxdll_.h

Voir aussi

Référence

AfxInitExtensionModule

Concepts

macro MFC et Globals