AFX_EXTENSION_MODULE โครงสร้าง

โครงสร้างของAFX_EXTENSION_MODULEมีแบบฟอร์มต่อไปนี้:

struct AFX_EXTENSION_MODULE
{
 nbsp BOOL bInitialized
   HMODULE hModule
   HMODULE hResource
   CRuntimeClass * pFirstSharedClass
   COleObjectFactory * pFirstSharedFactory
}(&N)

AFX_EXTENSION_MODULEใช้ในระหว่างการเตรียมใช้งานส่วนขยายของ MFC Dll เพื่อเก็บสถานะของโมดูล DLL ของนามสกุล?

สมาชิก

bInitialized

TRUEถ้าโมดูล DLL ได้ถูกเตรียมใช้งานกับAfxInitExtensionModule?

hModule

ระบุหมายเลขอ้างอิงของโมดูล DLL?

hResource

ระบุหมายเลขอ้างอิงของโมดูล DLL ทรัพยากรที่กำหนดเอง?

pFirstSharedClass

ตัวชี้ไปยังข้อมูล (โครงสร้างCRuntimeClass ) เกี่ยวกับ runtime ของโมดูล DLL ตั้งอยู่ในชั้นแรก ใช้ในการให้การเริ่มต้นของรายการคลา runtime?

pFirstSharedFactory

ตัวชี้ไปยังโรงวัตถุแรกของโมดูล DLL (วัตถุCOleObjectFactory ) ใช้ในการให้การเริ่มต้นของรายชื่อโรงงานคลาส?

ความคิดเห็น

MFC นามสกุล Dll ต้องทำสองสิ่งในการทำงานของDllMain:

AFX_EXTENSION_MODULEโครงสร้างใช้เพื่อเก็บสำเนาของส่วนขยายรัฐโมดูล DLL รวมทั้งสำเนาของวัตถุคลา runtime ที่ได้ถูกเตรียมใช้งาน ด้วยนามสกุล DLL ที่เป็นส่วนหนึ่งของการก่อสร้างวัตถุคงปกติที่ดำเนินการก่อนป้อนDllMain ตัวอย่างเช่น:

 คง AFX_EXTENSION_MODULE extensionDLL
int "C" extern APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
 nbsp / / เตรียมใช้งานโมดูนามสกุล DLL นี้
   ตรวจสอบ (AfxInitExtensionModule (extensionDLL, hInstance))(&N)

ข้อมูลโมดูลที่เก็บอยู่ในโครงสร้างแบบAFX_EXTENSION_MODULEสามารถถูกคัดลอกลงในวัตถุCDynLinkLibrary ตัวอย่างเช่น:

/ / คลาส CDynLinkLibrary
IMPLEMENT_DYNAMIC (CDynLinkLibrary, CCmdTarget)
/ / กำหนด
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp สถานะ BOOL bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
   m_factoryList.Construct (offsetof (COleObjectFactory, m_pNextFactory));
#endif
   m_classList.Construct (offsetof (CRuntimeClass, m_pNextClass));

/ / คัดลอกข้อมูลจาก 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(&A)

ดูเพิ่มเติมnbspAfxInitExtensionModule, AfxTermExtensionModule(&N)

Index