AFX_EXTENSION_MODULE — Struktura

Element AFX_EXTENSION_MODULE jest używany podczas inicjowania bibliotek DLL rozszerzeń MFC do przechowywania stanu modułu DLL rozszerzenia MFC.

Składnia

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

Parametry

bInitialized
Wartość TRUE, jeśli moduł DLL został zainicjowany za pomocą AfxInitExtensionModulepolecenia .

hModule
Określa uchwyt modułu DLL.

hResource
Określa dojście niestandardowego modułu zasobów DLL.

pFirstSharedClass
Wskaźnik do informacji ( CRuntimeClass struktury) o pierwszej klasie środowiska uruchomieniowego modułu DLL. Służy do udostępniania początku listy klas środowiska uruchomieniowego.

pFirstSharedFactory
Wskaźnik do pierwszej fabryki COleObjectFactory obiektów (obiektu) modułu DLL. Służy do udostępniania początku listy fabryki klas.

Uwagi

Biblioteki DLL rozszerzeń MFC muszą wykonywać dwie czynności w swojej DllMain funkcji:

Struktura AFX_EXTENSION_MODULE służy do przechowywania kopii stanu modułu DLL rozszerzenia MFC, w tym kopii obiektów klasy środowiska uruchomieniowego, które zostały zainicjowane przez bibliotekę DLL rozszerzenia MFC w ramach normalnej konstrukcji obiektów statycznych wykonanych przed DllMain wprowadzeniem. Przykład:

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;

Informacje o module przechowywane w AFX_EXTENSION_MODULE strukturze można skopiować do CDynLinkLibrary obiektu. Przykład:

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;
}

Wymagania

Nagłówek: afx.h

Zobacz też

Struktury, style, wywołania zwrotne i mapy komunikatów
Afxinitextensionmodule
AfxTermExtensionModule