Sdílet prostřednictvím


Struktura AFX_EXTENSION_MODULE

AFX_EXTENSION_MODULE Se používá při inicializaci knihovny DLL rozšíření MFC držet stav modulu DLL rozšíření.

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

Parametry

  • bInitialized
    TRUE -li knihovnu DLL byla inicializována s AfxInitExtensionModule.

  • hModule
    Určuje popisovač knihovnu DLL.

  • hResource
    Určuje popisovač prostředku vlastní knihovnu DLL.

  • pFirstSharedClass
    Odkaz na informace ( CRuntimeClass struktury) o první třídy runtime knihovnu DLL.Lze zajistit zahájení seznam tříd runtime.

  • pFirstSharedFactory
    Ukazatel na knihovnu DLL první tovární objekt ( COleObjectFactory objektu).Použitý pro zahájení výroby seznam tříd.

Poznámky

MFC příponu DLL nutné provést dvě věci v jejich DllMain funkce:

  • Volání AfxInitExtensionModule a zkontrolujte návratovou hodnotu.

  • Vytvoření CDynLinkLibrary objektu, pokud budete exportovat DLL CRuntimeClass objektů nebo má vlastní prostředky.

AFX_EXTENSION_MODULE Struktura se používá k uložení kopie příponu DLL modulu státu, včetně kopie runtime třídy objektů, které byly inicializovány příponu DLL jako součást běžné statický objekt konstrukce provedeny před DllMain je zadána.Příklad:

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;

Modul informace uložené v AFX_EXTENSION_MODULE struktury lze zkopírovat do CDynLinkLibrary objektu.Příklad:

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

Požadavky

Záhlaví: afx.h

Viz také

Referenční dokumentace

AfxInitExtensionModule

AfxTermExtensionModule

Další zdroje

Struktury, styly, zpětná volání a zprávy mapy