La struttura AFX_EXTENSION_MODULE ha la seguente forma:
struct AFX_EXTE&NSION_MODULE
{
nbsp; BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass * pFirstSharedClass;
COleObjectFactory * pFirstSharedFactory;
}
Il AFX_EXTENSION_MODULE viene utilizzata durante l'inizializzazione di dll di estensione MFC per contenere lo stato del modulo di estensione DLL.
Membri
bInitialized
TRUE se il modulo DLL è stato inizializzato con AfxInitExtensionModule.
hModule
Specifica l'handle del modulo DLL.
hResource
Specifica l'handle del modulo DLL risorse personalizzati.
pFirstSharedClass
Puntatore a informazioni (la struttura CRuntimeClass ) sulla classe di runtime prima del modulo DLL. Utilizzato per fornire l'inizio dell'elenco delle classi runtime.
pFirstSharedFactory
Un puntatore alla fabbrica di oggetto prima del modulo DLL (un oggetto COleObjectFactory ). Utilizzato per fornire l'inizio dell'elenco di fabbrica delle classi.
Commenti
Le dll di estensione MFC devono fare due cose nella loro funzione DllMain:
La struttura AFX_EXTENSION_MODULE viene utilizzata per contenere una copia dell'estensione stato modulo DLL, compresa una copia gli oggetti di classe runtime che sono stati inizializzati dall'estensione DLL come parte della costruzione di un normale oggetto statico eseguito prima DllMain viene immesso. Ad esempio:
statico AFX_EXTE&NSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
nbsp; / / initialize modulo di estensione di questa DLL
VERIFY (AfxInitExtensionModule (extensionDLL, hInstance))
Le informazioni del modulo memorizzate nella struttura AFX_EXTENSION_MODULE possono essere copiate nell'oggetto CDynLinkLibrary . Ad esempio:
/ / Classe CDynLinkLibrary
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Costruttore
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp; BOOL bSystem dello stato)
{
# IFNDEF _AFX_NO_OLE_SUPPORT
m_factoryList.construct (offsetof (COleObjectFactory, m_pNextFactory));
# endif
m_classList.construct (offsetof (CRuntimeClass, m_pNextClass));
/ / copiare informazioni da struct AFX_EXTENSION_MODULE
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
Vedere a&nchenbsp;AfxInitExtensionModule, AfxTermExtensionModule