AfxTermExtensionModule
呼叫這個函式提供 MFC 到清除擴充 DLL 時,每個處理序中斷連接時,就會處理序結束時的 DLL 時, (或,當卸載 DLL 由於呼叫 AfxFreeLibrary 時)。
void AFXAPI AfxTermExtensionModule(
AFX_EXTENSION_MODULE& state,
BOOL bAll = FALSE
);
參數
state
out 包含擴充 DLL 模組狀態之 AFX_EXTENSION_MODULE 結構的參考。。
如果 TRUE,清除所有擴充 DLL 模組。 否則,清除只有目前 DLL 模組。
備註
AfxTermExtensionModule 會刪除所有本機儲存體附加至模組並從訊息對應快取區中移除任何項目。 例如:
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
}
如果您的應用程式以動態方式載入並釋放擴充 DLL,請確定呼叫 AfxTermExtensionModule。 因為大部分擴充 DLL 沒有動態載入 (通常,會透過其匯入程式庫連結),對 AfxTermExtensionModule 的呼叫通常不是必要的。
MFC 擴充 DLL 必須呼叫其 DllMain的 AfxInitExtensionModule 。 如果 DLL 匯出 CRuntimeClass 物件或擁有自己的自訂資源,您也需要在 DllMain上建立一個 CDynLinkLibrary 物件。
需求
Header: afxdll_.h