AFX_EXTENSION_MODULE, structure
Il AFX_EXTENSION_MODULE
est utilisé lors de l’initialisation des DLL d’extension MFC pour contenir l’état du module DLL d’extension MFC.
Syntaxe
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Paramètres
bInitialized
TRUE si le module DLL a été initialisé avec AfxInitExtensionModule
.
hModule
Spécifie le handle du module DLL.
hResource
Spécifie le handle du module de ressource personnalisée DLL.
pFirstSharedClass
Pointeur vers des informations (structure CRuntimeClass
) sur la première classe runtime du module DLL. Permet de fournir le début de la liste des classes runtime.
pFirstSharedFactory
Pointeur vers la première fabrique d’objets du module DLL (un COleObjectFactory
objet). Permet de fournir le début de la liste des fabriques de classes.
Notes
Les DLL d’extension MFC doivent effectuer deux opérations dans leur DllMain
fonction :
Appelez AfxInitExtensionModule et vérifiez la valeur de retour.
Créez un
CDynLinkLibrary
objet si la DLL exporte des objets CRuntimeClass ou possède ses propres ressources personnalisées.
La AFX_EXTENSION_MODULE
structure est utilisée pour contenir une copie de l’état du module DLL d’extension MFC, y compris une copie des objets de classe runtime qui ont été initialisés par la DLL d’extension MFC dans le cadre de la construction d’objets statiques normale exécutée avant DllMain
d’être entrés. Par exemple :
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;
Les informations de module stockées dans la AFX_EXTENSION_MODULE
structure peuvent être copiées dans l’objet CDynLinkLibrary
. Par exemple :
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;
}
Spécifications
En-tête : afx.h
Voir aussi
Structures, styles, rappels et tables de messages
AfxInitExtensionModule
AfxTermExtensionModule