AFX_EXTENSION_MODULE Structure

La structure AFX_EXTENSION_MODULE a la forme suivante:

struct AFX_EXTE&NSION_MODULE
{
 nbsp ; BOOL bInitialized ;
   HMODULE hModule ;
   HMODULE hResource ;
   CRuntimeClass * pFirstSharedClass ;
   COleObjectFactory * pFirstSharedFactory ;
}

AFX_EXTENSION_MODULE est utilisée lors de l'initialisation de la DLL d'extension MFC pour maintenir l'État du module d'extension DLL.

Membres

bInitialized

TRUE si le module de la DLL a été initialisé avec AfxInitExtensionModule.

hModule

Spécifie le handle du module DLL.

hResource

Spécifie le handle du module DLL ressource personnalisée.

pFirstSharedClass

Un pointeur à l'information (la structure CRuntimeClass ) sur première classe de runtime du module de la DLL. Utilisé pour fournir le début de la liste de la classe runtime.

pFirstSharedFactory

Pointeur vers la fabrique d'objet premier du module de la DLL (objet COleObjectFactory ). Utilisé pour fournir le début de la liste d'usine de classe.

Commentaires

Les DLL d'extension MFC doivent faire deux choses à leur fonction DllMain:

La structure AFX_EXTENSION_MODULE est utilisée pour contenir une copie de l'extension État module DLL, y compris une copie des objets de la classe runtime qui ont été initialisés par la DLL d'extension dans le cadre de la construction d'objet statique normale exécutée avant que DllMain est entré. Par exemple:

 statique AFX_EXTE&NSION_MODULE extensionDLL ;
extern « C » int APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
 nbsp ; / / initialiser le module d'extension de cette DLL
   VÉRIFIER (AfxInitExtensionModule (extensionDLL, hInstance))

Les informations de module stockées dans la structure AFX_EXTENSION_MODULE peuvent être copiées dans un objet CDynLinkLibrary . Par exemple:

/ / Classe CDynLinkLibrary
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Constructeur
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp ; État, BOOL bSystem)
{
# ifndef _AFX_NO_OLE_SUPPORT
   m_factoryList.Construct (offsetof (COleObjectFactory, m_pNextFactory)) ;
# endif
   m_classList.Construct (offsetof (CRuntimeClass, m_pNextClass)) ;

/ copie des infos de 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

Voir aussi  ;AfxInitExtensionModule, AfxTermExtensionModule

Index