共用方式為


AFX_EXTENSION_MODULE 結構

AFX_EXTENSION_MODULE在 MFC 擴充 DLL 初始化期間,會使用 來保存 MFC 擴充 DLL 模組的狀態。

語法

struct AFX_EXTENSION_MODULE
{
    BOOL bInitialized;
    HMODULE hModule;
    HMODULE hResource;
    CRuntimeClass* pFirstSharedClass;
    COleObjectFactory* pFirstSharedFactory;
};

參數

bInitialized
如果 DLL 模組已使用 AfxInitExtensionModule初始化,則為 TRUE。

hModule
指定 DLL 模組的句柄。

hResource
指定 DLL 自訂資源模組的句柄。

pFirstSharedClass
DLL 模組第一個運行時間類別的相關信息指標( CRuntimeClass 結構)。 用來提供運行時間類別清單的開頭。

pFirstSharedFactory
DLL 模組第一個對象處理站的指標(物件 COleObjectFactory )。 用來提供類別 Factory 清單的開頭。

備註

MFC 擴充 DLL 必須在其 DllMain 函式中執行兩件事:

結構 AFX_EXTENSION_MODULE 用來保存 MFC 延伸模組 DLL 模組狀態的複本,包括 MFC 擴充功能 DLL 已初始化的運行時間類別對象的複本,做為在輸入之前 DllMain 執行的一般靜態物件建構的一部分。 例如:

static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL;
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");
        
        // MFC extension DLL one-time initialization
        if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
            return 0;

儲存在結構中的 AFX_EXTENSION_MODULE 模組資訊可以複製到 CDynLinkLibrary 物件中。 例如:

IMPLEMENT_DYNAMIC(CMyDynLinkLibrary, CDynLinkLibrary)

CMyDynLinkLibrary::CMyDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
   : CDynLinkLibrary(state, bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
    m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
#endif
    m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));

    // copy info from AFX_EXTENSION_MODULE struct
    ASSERT(state.hModule != NULL);
    m_hModule = state.hModule;
    m_hResource = state.hResource;
    m_classList.m_pHead = state.pFirstSharedClass;
#ifndef _AFX_NO_OLE_SUPPORT
    m_factoryList.m_pHead = state.pFirstSharedFactory;
#endif
    m_bSystem = bSystem;
}

需求

標頭: afx.h

另請參閱

結構、樣式、回呼和訊息對應
AfxInitExtensionModule
AfxTermExtensionModule