โครงสร้างของ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)