Aşağıdaki formu AFX_EXTENSION_MODULE yapıya sahiptir:
struct AFX_EXTE&NSION_MODULE
{
nbsp; bool bInitialized;
hmodule hModule;
hmodule hResource;
CRuntimeClass * pFirstSharedClass;
COleObjectFactory * pFirstSharedFactory;
}
AFX_EXTENSION_MODULE mfc uzantısı dll başlatma sırasında uzantısı dll modülünü durumu tutmak için kullanılır.
Üyeler
bInitialized
dll modülünü AfxInitExtensionModule ile başlatılmış ise true.
hModule
Dll modülünü tutamacını belirtir.
hResource
Özel kaynak dll modülünü tutamacını belirtir.
pFirstSharedClass
( CRuntimeClass yapısı) dll modülünün ilk çalışma sınıfı hakkında bilgi için bir işaretçi. Çalışma sınıfı listesinin başlangıcını sağlamak için kullanılan.
pFirstSharedFactory
Dll modülün ilk nesne fabrikası ( COleObjectFactory nesnesi) için bir işaretçi. Sınıf fabrika listesi başlangıç sağlamak için kullanılan.
Yorumlar
Mfc uzantısı dll onların DllMain işlevi iki şey yapmanız gerekir:
AFX_EXTENSION_MODULE yapısı, uzantı dll modülünü devlet, uzantı dll tarafından normal Duruk nesne inşaat DllMain girilmeden önce yürütülen bir parçası olarak başlatıldıktan runtime sınıf nesneleri bir kopyasını da dahil olmak üzere bir kopyasını tutmak için kullanılır. Örneğin:
statik AFX_EXTE&NSION_MODULE extensionDLL;
extern "c" int APIENTRY
DllMain (HINSTANCE HINSTANCE, dword dwReason, LPVOID)
{
nbsp; / / Bu dll uzantısı modülü başlatılamıyor
DOĞRULAMA (AfxInitExtensionModule (extensionDLL, HINSTANCE))
AFX_EXTENSION_MODULE yapısı içinde depolanan modül bilgilerini CDynLinkLibrary nesnesine kopyalanabilir. Örneğin:
/ / CDynLinkLibrary class
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Oluşturucu
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp; devlet, bool bSystem)
{
#ifndef _afx_no_ole_support
m_factoryList.construct (offsetof (COleObjectFactory, m_pNextFactory));
endif
m_classList.construct (offsetof (CRuntimeClass, m_pNextClass));
/ / bilgi copy 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 =
Ayrıca bkz: AfxInitExtensionModule, AfxTermExtensionModule