Estrutura AFX_EXTENSION_MODULE

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

Index