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 AfxInitExtensionModule
baş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:
AfxInitExtensionModule öğesini çağırın ve dönüş değerini denetleyin.
DLL CRuntimeClass nesnelerini dışarı aktaracaksa veya kendi özel kaynakları varsa bir
CDynLinkLibrary
nesne oluşturun.
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