共用方式為


AFX_EXTENSION_MODULE 結構

AFX_EXTENSION_MODULE的 MFC 擴充 Dll 的初始化期間用來容納擴充 DLL 模組的狀態。

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

參數

  • bInitialized
    本屬性為 TRUE 如果已使用初始化 DLL 模組AfxInitExtensionModule

  • hModule
    指定 DLL 模組控制的代碼。

  • hResource
    指定自訂資源 DLL 模組控制的代碼。

  • pFirstSharedClass
    變數的指標,資訊 ( CRuntimeClass結構) 的相關 DLL 模組中的第一個執行階段類別。 用來提供執行階段的類別清單的開頭。

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

備註

MFC 擴充 Dll 需要做兩件事,在其DllMain函式:

AFX_EXTENSION_MODULE結構用來保存一份擴充 DLL 的模組狀態,包括擴充 DLL 初始化之前執行的一般靜態物件建構的一部分的執行階段類別物件的一份DllMain輸入。 例如:

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;

模組資訊儲存在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

其他資源

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