Struttura AFX_EXTENSION_MODULE

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

Index