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