Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze AFX_EXTENSION_MODULE wordt gebruikt tijdens de initialisatie van MFC-extensie-DLL's om de status van de DLL-module van de MFC-extensie te bewaren.
Syntaxis
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parameterwaarden
bInitialized
WAAR als de DLL-module is geïnitialiseerd met AfxInitExtensionModule.
hModule
Hiermee geeft u de ingang van de DLL-module.
hResource
Hiermee geeft u de ingang van de aangepaste DLL-resourcemodule.
pFirstSharedClass
Een aanwijzer naar informatie (de CRuntimeClass structuur) over de eerste runtimeklasse van de DLL-module. Wordt gebruikt om het begin van de lijst met runtimeklassen op te geven.
pFirstSharedFactory
Een aanwijzer naar de eerste objectfactory van de DLL-module (een COleObjectFactory object). Wordt gebruikt om het begin van de klassefactorylijst op te geven.
Opmerkingen
MFC-extensie-DLL's moeten twee dingen doen in hun DllMain functie:
Roep AfxInitExtensionModule aan en controleer de retourwaarde.
Maak een
CDynLinkLibraryobject als de DLL CRuntimeClass-objecten exporteert of eigen aangepaste resources heeft.
De AFX_EXTENSION_MODULE structuur wordt gebruikt voor het opslaan van een kopie van de DLL-modulestatus van de MFC-extensie, inclusief een kopie van de runtimeklasseobjecten die zijn geïnitialiseerd door de MFC-extensie-DLL als onderdeel van de normale statische objectconstructie die wordt uitgevoerd voordat DllMain wordt ingevoerd. Voorbeeld:
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;
De modulegegevens die in de AFX_EXTENSION_MODULE structuur zijn opgeslagen, kunnen worden gekopieerd naar het CDynLinkLibrary object. Voorbeeld:
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;
}
Requirements
koptekst: afx.h
Zie ook
Structuren, stijlen, callbacks en berichttoewijzingen
AfxInitExtensionModule
AfxTermExtensionModule