Aracılığıyla paylaş


AFX_EXTENSION_MODULE Yapısı

, AFX_EXTENSION_MODULE MFC uzantısı DLL modülünün durumunu tutmak için MFC uzantısı DLL'lerinin başlatılması sırasında kullanılır.

Sözdizimi

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

Parametreler

bInitialized
DLL modülü ile AfxInitExtensionModulebaşlatıldıysa TRUE

hModule
DLL modülünün tutamacını belirtir.

hResource
DLL özel kaynak modülünün tutamacını belirtir.

pFirstSharedClass
DLL modülünün CRuntimeClass ilk çalışma zamanı sınıfı hakkındaki bilgilere (yapı) bir işaretçi. Çalışma zamanı sınıf listesinin başlangıcını sağlamak için kullanılır.

pFirstSharedFactory
DLL modülünün ilk nesne fabrikasının (nesne COleObjectFactory ) işaretçisi. Sınıf fabrika listesinin başlangıcını sağlamak için kullanılır.

Açıklamalar

MFC uzantısı DLL'lerinin DllMain işlevlerinde iki şey yapması gerekir:

Yapı AFX_EXTENSION_MODULE , MFC uzantısı DLL'si tarafından başlatılmamış çalışma zamanı sınıf nesnelerinin bir kopyası girilmeden önce DllMain yürütülen normal statik nesne yapısının bir parçası olarak MFC uzantısı DLL modül durumunun bir kopyasını tutmak için kullanılır. Örneğin:

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;

Yapıda AFX_EXTENSION_MODULE depolanan modül bilgileri nesnesine CDynLinkLibrary kopyalanabilir. Örneğin:

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

Gereksinimler

Üst bilgi: afx.h

Ayrıca bkz.

Yapılar, Stiller, Geri Çağrılar ve İleti Eşlemeleri
AfxInitExtensionModule
AfxTermExtensionModule