AFX_EXTENSION_MODULE – struktura
Používá AFX_EXTENSION_MODULE
se při inicializaci knihoven DLL rozšíření MFC k uložení stavu modulu KNIHOVNY DLL rozšíření MFC.
Syntaxe
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parametry
bInitialized
TRUE, pokud byl modul DLL inicializován pomocí AfxInitExtensionModule
.
hModule
Určuje popisovač modulu DLL.
hResource
Určuje popisovač vlastního modulu prostředků knihovny DLL.
pFirstSharedClass
Ukazatel na informace ( CRuntimeClass
struktura) o první třídě modulu RUNTIME modulu DLL. Slouží k zadání začátku seznamu tříd modulu runtime.
pFirstSharedFactory
Ukazatel na první objektovou továrnu (objekt) COleObjectFactory
modulu DLL. Slouží k zadání začátku seznamu objektů pro vytváření tříd.
Poznámky
Knihovny DLL rozšíření MFC musí ve své DllMain
funkci provádět dvě věci:
Zavolejte AfxInitExtensionModule a zkontrolujte návratovou hodnotu.
Vytvořte objekt,
CDynLinkLibrary
pokud knihovna DLL exportuje objekty CRuntimeClass nebo má vlastní prostředky.
Struktura AFX_EXTENSION_MODULE
se používá k uložení kopie stavu modulu DLL rozšíření MFC, včetně kopie objektů třídy runtime, které byly inicializovány knihovnou DLL rozšíření MFC jako součást normální statické objekt konstrukce spuštěna před DllMain
vstupem. Příklad:
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;
Informace o modulu uložené ve AFX_EXTENSION_MODULE
struktuře lze do objektu CDynLinkLibrary
zkopírovat. Příklad:
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;
}
Požadavky
Hlavička: afx.h
Viz také
Struktury, styly, zpětná volání a mapy zpráv
AfxInitExtensionModule
AfxTermExtensionModule