Struttura AFX_EXTENSION_MODULE
Viene AFX_EXTENSION_MODULE
usato durante l'inizializzazione delle DLL di estensione MFC per contenere lo stato del modulo DLL dell'estensione MFC.
Sintassi
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parametri
bInitialized
TRUE se il modulo DLL è stato inizializzato con AfxInitExtensionModule
.
hModule
Specifica l'handle del modulo DLL.
hResource
Specifica l'handle del modulo di risorse personalizzate della DLL.
pFirstSharedClass
Puntatore a informazioni (struttura CRuntimeClass
) sulla prima classe di runtime del modulo DLL. Usato per fornire l'inizio dell'elenco di classi di runtime.
pFirstSharedFactory
Puntatore alla prima factory dell'oggetto (oggetto COleObjectFactory
) del modulo DLL. Usato per fornire l'inizio dell'elenco di class factory.
Osservazioni:
Le DLL di estensione MFC devono eseguire due operazioni nella funzione DllMain
:
Chiamare AfxInitExtensionModule e controllare il valore restituito.
Creare un
CDynLinkLibrary
oggetto se la DLL esporta oggetti CRuntimeClass o ha risorse personalizzate.
La AFX_EXTENSION_MODULE
struttura viene usata per contenere una copia dello stato del modulo DLL dell'estensione MFC, inclusa una copia degli oggetti classe di runtime inizializzati dalla DLL dell'estensione MFC come parte della normale costruzione di oggetti statici eseguita prima DllMain
di essere immessa. Ad esempio:
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;
Le informazioni sul modulo archiviate nella AFX_EXTENSION_MODULE
struttura possono essere copiate nell'oggetto CDynLinkLibrary
. Ad esempio:
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;
}
Requisiti
Intestazione: afx.h
Vedi anche
Strutture, stili, callback e mappe messaggi
AfxInitExtensionModule
AfxTermExtensionModule