Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dies AFX_EXTENSION_MODULE wird während der Initialisierung von MFC-Erweiterungs-DLLs verwendet, um den Zustand des MFC-Erweiterungs-DLL-Moduls zu halten.
Syntax
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parameter
bInitialisiert
TRUE, wenn das DLL-Modul mit AfxInitExtensionModuleinitialisiert wurde.
hModule
Gibt das Handle des DLL-Moduls an.
hResource
Gibt das Handle des benutzerdefinierten DLL-Ressourcenmoduls an.
pFirstSharedClass
Ein Zeiger auf Informationen (die CRuntimeClass Struktur) über die erste Laufzeitklasse des DLL-Moduls. Wird verwendet, um den Anfang der Laufzeitklassenliste bereitzustellen.
pFirstSharedFactory
Ein Zeiger auf die erste Objektfactory des DLL-Moduls (ein COleObjectFactory Objekt). Wird verwendet, um den Anfang der Klassenfactoryliste bereitzustellen.
Hinweise
MFC-Erweiterungs-DLLs müssen zwei Dinge in ihrer DllMain Funktion ausführen:
Rufen Sie AfxInitExtensionModule auf, und überprüfen Sie den Rückgabewert.
Erstellen Sie ein
CDynLinkLibraryObjekt, wenn die DLL CRuntimeClass-Objekte exportiert oder über eigene benutzerdefinierte Ressourcen verfügt.
Die AFX_EXTENSION_MODULE Struktur wird verwendet, um eine Kopie des MFC-Erweiterungs-DLL-Modulzustands zu speichern, einschließlich einer Kopie der Laufzeitklassenobjekte, die von der MFC-Erweiterungs-DLL als Teil der normalen statischen Objektkonstruktion initialisiert wurden, die vor DllMain der Eingabe ausgeführt wird. Zum Beispiel:
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;
Die in der AFX_EXTENSION_MODULE Struktur gespeicherten Modulinformationen können in das CDynLinkLibrary Objekt kopiert werden. Zum Beispiel:
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;
}
Anforderungen
Header: afx.h
Siehe auch
Strukturen, Stile, Rückrufe und Meldungszuordnungen
AfxInitExtensionModule
AfxTermExtensionModule