Bagikan melalui


Struktur AFX_EXTENSION_MODULE

AFX_EXTENSION_MODULE digunakan selama inisialisasi DLL ekstensi MFC untuk menahan status modul DLL ekstensi MFC.

Sintaks

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

Parameter

bInitialized
TRUE jika modul DLL telah diinisialisasi dengan AfxInitExtensionModule.

hModule
Menentukan handel modul DLL.

hResource
Menentukan handel modul sumber daya kustom DLL.

pFirstSharedClass
Penunjuk ke informasi ( CRuntimeClass struktur) tentang kelas runtime pertama modul DLL. Digunakan untuk menyediakan awal daftar kelas runtime.

pFirstSharedFactory
Penunjuk ke pabrik objek pertama modul DLL ( COleObjectFactory objek). Digunakan untuk menyediakan awal daftar pabrik kelas.

Keterangan

DLL ekstensi MFC perlu melakukan dua hal dalam fungsinya DllMain :

Struktur AFX_EXTENSION_MODULE ini digunakan untuk menyimpan salinan status modul DLL ekstensi MFC, termasuk salinan objek kelas runtime yang telah diinisialisasi oleh DLL ekstensi MFC sebagai bagian dari konstruksi objek statis normal yang dijalankan sebelum DllMain dimasukkan. Contohnya:

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;

Informasi modul yang AFX_EXTENSION_MODULE disimpan dalam struktur dapat disalin ke CDynLinkLibrary dalam objek. Contohnya:

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

Persyaratan

Header: afx.h

Lihat juga

Struktur, Gaya, Panggilan Balik, serta Peta Pesan
AfxInitExtensionModule
AfxTermExtensionModule