Condividi tramite


AfxTermExtensionModule

Chiamare questa funzione per consentire a MFC nella pulizia la DLL di estensione quando ogni processo si disconnette dalla DLL (che si verifica quando viene chiuso, o quando la DLL viene scaricata in seguito a una chiamata di AfxFreeLibrary ).

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

Parametri

  • state
    Un riferimento alla struttura di AFX_EXTENSION_MODULE contenente lo stato del modulo DLL di estensione.

  • sfera
    Se TRUE, pulizia tutti i moduli DLL di estensione. In caso contrario, pulizia solo il modulo corrente della DLL.

Note

AfxTermExtensionModule eliminato qualsiasi l'archiviazione locale associata al form e rimuove le voci dalla cache della mappa messaggi. Di seguito è riportato un esempio.

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
}

Se l'applicazione carica dinamicamente e libera DLL di estensione, assicurarsi di chiamare AfxTermExtensionModule. Poiché la maggior parte delle DLL di estensione non vengono caricati dinamicamente in genere, vengono collegati tramite le relative librerie di importazione), la chiamata a AfxTermExtensionModule non è in genere necessaria.

Le DLL di estensione MFC devono chiamare AfxInitExtensionModule nel DllMain. Se la DLL esporterà gli oggetti di CRuntimeClass o dispone di propri metodi personalizzati, è inoltre necessario creare un oggetto di CDynLinkLibrary in DllMain.

Requisiti

Intestazione: afxdll_.h

Vedere anche

Riferimenti

AfxInitExtensionModule

Concetti

Macro e funzioni globali MFC