AFX_EXTENSION_MODULE, structure

Il AFX_EXTENSION_MODULE est utilisé lors de l’initialisation des DLL d’extension MFC pour contenir l’état du module DLL d’extension MFC.

Syntaxe

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

Paramètres

bInitialized
TRUE si le module DLL a été initialisé avec AfxInitExtensionModule.

hModule
Spécifie le handle du module DLL.

hResource
Spécifie le handle du module de ressource personnalisée DLL.

pFirstSharedClass
Pointeur vers des informations (structure CRuntimeClass ) sur la première classe runtime du module DLL. Permet de fournir le début de la liste des classes runtime.

pFirstSharedFactory
Pointeur vers la première fabrique d’objets du module DLL (un COleObjectFactory objet). Permet de fournir le début de la liste des fabriques de classes.

Notes

Les DLL d’extension MFC doivent effectuer deux opérations dans leur DllMain fonction :

La AFX_EXTENSION_MODULE structure est utilisée pour contenir une copie de l’état du module DLL d’extension MFC, y compris une copie des objets de classe runtime qui ont été initialisés par la DLL d’extension MFC dans le cadre de la construction d’objets statiques normale exécutée avant DllMain d’être entrés. Par exemple :

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;

Les informations de module stockées dans la AFX_EXTENSION_MODULE structure peuvent être copiées dans l’objet CDynLinkLibrary . Par exemple :

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

Spécifications

En-tête : afx.h

Voir aussi

Structures, styles, rappels et tables de messages
AfxInitExtensionModule
AfxTermExtensionModule