Estrutura AFX_EXTENSION_MODULE
O AFX_EXTENSION_MODULE é usado durante a inicialização de DLLs de extensão do MFC para manter o estado do módulo de DLL de extensão.
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parâmetros
bInitialized
TRUE 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 de recurso personalizado DLL.pFirstSharedClass
Um ponteiro para informações (o CRuntimeClass estrutura) sobre a primeira classe de tempo de execução do módulo DLL.Usado para fornecer o início da lista de classe de tempo de execução.pFirstSharedFactory
Um ponteiro para a primeira fábrica de objeto do módulo DLL (um COleObjectFactory objeto).Usado para fornecer o início da lista de fábrica de classe.
Comentários
Extensão do MFC DLLs precise fazer duas coisas em seus DllMain função:
Chamar AfxInitExtensionModule e verifique o valor de retorno.
Criar um CDynLinkLibrary de objeto se a DLL estará exportando CRuntimeClass objetos ou tem seus próprios recursos personalizados.
O AFX_EXTENSION_MODULE estrutura é usada para armazenar uma cópia da extensão do estado do módulo DLL, incluindo uma cópia dos objetos de classe em tempo de execução foi inicializada pela extensão DLL como parte da construção de objeto estático normal executada antes de DllMain é inserido.Por exemplo:
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
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");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
As informações de módulo armazenadas no AFX_EXTENSION_MODULE estrutura pode ser copiada para o CDynLinkLibrary objeto.Por exemplo:
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;
}
Requisitos
Cabeçalho: Afx. h
Consulte também
Referência
Outros recursos
Estruturas, estilos, retornos de chamada e mapas de mensagem