A estrutura AFX_EXTENSION_MODULE tem a seguinte forma:
estrutura AFX_EXTE&NSION_MODULE
{
nbsp; BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass * pFirstSharedClass;
COleObjectFactory * pFirstSharedFactory;
}
O AFX_EXTENSION_MODULE é usado durante a inicialização de extensão do MFC DLLs para armazenar o estado do módulo DLL de extensão.
Membros
bInitialized
Verdadeiro se o módulo DLL tiver sido inicializado com AfxInitExtensionModule.
hModule
Especifica o identificador do módulo de DLL.
hResource
Especifica o identificador do módulo DLL de recursos personalizado.
pFirstSharedClass
Um ponteiro para informações (a estrutura de CRuntimeClass ) sobre a primeira classe de tempo de execução do módulo DLL. Usado para fornecer o Iniciar da lista de classe de tempo de execução.
pFirstSharedFactory
Um ponteiro para a primeira fábrica de objeto do módulo DLL (um objeto COleObjectFactory ). Usado para fornecer o Iniciar da lista de fábrica de classe.
Comentários
DLLs de extensão MFC precisarão fazer duas coisas em seu DllMain função:
A estrutura AFX_EXTENSION_MODULE é usada para armazenar uma cópia da extensão do Estado do módulo DLL, incluindo uma cópia dos objetos de classe de tempo de execução que foram inicializadas pela extensão DLL como parte da construção de objeto estático normal executada antes de DllMain é inserida. Por exemplo:
extensionDLL AFX_EXTE&NSION_MODULE estático;
extern "C" int APIENTRY
DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
nbsp; / / inicializar o módulo de extensão da DLL
VERIFICAR (AfxInitExtensionModule (extensionDLL, hInstance))
As informações de módulo armazenadas na estrutura de AFX_EXTENSION_MODULE podem ser copiadas para o objeto de CDynLinkLibrary . Por exemplo:
/ / Classe de CDynLinkLibrary
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Construtor
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp; Estado, BOOL bSystem)
{
# ifndef _AFX_NO_OLE_SUPPORT
m_factoryList.Construct (offsetof (COleObjectFactory, m_pNextFactory));
# endif
m_classList.Construct (offsetof (CRuntimeClass, m_pNextClass));
/ / copiar informações de estrutura 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
Co&nsulte tambémnbsp;AfxInitExtensionModule, AfxTermExtensionModule