AFX_EXTENSION_MODULE — Struktura
Element AFX_EXTENSION_MODULE
jest używany podczas inicjowania bibliotek DLL rozszerzeń MFC do przechowywania stanu modułu DLL rozszerzenia MFC.
Składnia
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parametry
bInitialized
Wartość TRUE, jeśli moduł DLL został zainicjowany za pomocą AfxInitExtensionModule
polecenia .
hModule
Określa uchwyt modułu DLL.
hResource
Określa dojście niestandardowego modułu zasobów DLL.
pFirstSharedClass
Wskaźnik do informacji ( CRuntimeClass
struktury) o pierwszej klasie środowiska uruchomieniowego modułu DLL. Służy do udostępniania początku listy klas środowiska uruchomieniowego.
pFirstSharedFactory
Wskaźnik do pierwszej fabryki COleObjectFactory
obiektów (obiektu) modułu DLL. Służy do udostępniania początku listy fabryki klas.
Uwagi
Biblioteki DLL rozszerzeń MFC muszą wykonywać dwie czynności w swojej DllMain
funkcji:
Wywołaj metodę AfxInitExtensionModule i sprawdź wartość zwracaną.
CDynLinkLibrary
Utwórz obiekt, jeśli biblioteka DLL będzie eksportować obiekty CRuntimeClass lub ma własne zasoby niestandardowe.
Struktura AFX_EXTENSION_MODULE
służy do przechowywania kopii stanu modułu DLL rozszerzenia MFC, w tym kopii obiektów klasy środowiska uruchomieniowego, które zostały zainicjowane przez bibliotekę DLL rozszerzenia MFC w ramach normalnej konstrukcji obiektów statycznych wykonanych przed DllMain
wprowadzeniem. Na przykład:
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;
Informacje o module przechowywane w AFX_EXTENSION_MODULE
strukturze można skopiować do CDynLinkLibrary
obiektu. Na przykład:
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;
}
Wymagania
Nagłówek: afx.h
Zobacz też
Struktury, style, wywołania zwrotne i mapy komunikatów
AfxInitExtensionModule
AfxTermExtensionModule