privatevoid &AFXAPI AfxTermExtensionModule ( AFX_EXTENSION_MODULEamp; Zustand, BOOL Kugel = Falsch );
Parameter
zustand
Ein Verweis auf die AFX_EXTENSION_MODULE Struktur, die den Zustand der Erweiterungs-DLL-Modul enthält.
Kugel&Nbsp; Wenn TRUE, Bereinigung aller DLL Erweiterungsmodule. Ansonsten, Bereinigung nur die aktuellen DLL-Modul.
Bemerkungen
Rufen Sie diese Funktion um MFC zur Reinigung die Erweiterungs-DLL ermöglichen jedem Prozess aus der DLL getrennt wird (das geschieht, wenn der Prozess beendet wird oder wenn die DLL aufgrund eines AfxFreeLibrary -Aufrufs entladen wird). AfxTermExtensionModule löscht alle lokalen Speicher an das Modul angeschlossen und entfernen Sie alle Einträge aus dem Cache Nachricht anzeigen. Zum Beispiel:
statische AFX_EXTE&NSION_MODULE ExtensionDLL;
Extern "C" Int APIENTRY DllMain (HINSTANCE hInstance, DWORD DwReason, LPVOID kombiniert werden)
{
Nbsp; Wenn (DwReason == DLL_PROCESS_ATTACH)
{
/ / Extension DLL einmalige Initialisierung If (!AfxInitExtensionModule ExtensionDLL (hInstance))
return 0;
/ / TODO: hier Weitere Initialisierungsaufgaben ausführen
}
elseif (DwReason == DLL_PROCESS_DETACH)
{
/ / Erweiterungs-DLL pro Prozess Beendigung
AfxTermExtensionModule(extensionDLL);
/ / TODO: hier andere Cleanuptasks ausführen
}
1 zurück; / / ok
}
Wenn die Anwendung lädt und Erweiterungs-DLLs dynamisch freigibt, müssen Sie AfxTermExtensionModuleaufrufen. Seit die meisten Erweiterungs-DLLs werden nicht dynamisch geladen (in der Regel, wenn sie verbunden über ihre Importbibliotheken), der Aufruf von AfxTermExtensionModule ist normalerweise nicht erforderlich.
MFC-Erweiterungs-DLLs müssen AfxInitExtensionModule in ihrer DllMainaufgerufen. Wenn die DLL eine eigene benutzerdefinierten Ressourcen hat oder wird sein CRuntimeClass -Objekte exportieren, müssen Sie auch ein CDynLinkLibrary -Objekt in DllMain erstellen.
Siehe auch&Nbsp;AfxInitExtensionModule