Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
O AFX_EXTENSION_MODULE é usado durante a inicialização das DLLs de extensão MFC para manter o estado do módulo DLL de extensão MFC.
Sintaxe
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
Parâmetros
bInicializado
TRUE se o módulo DLL tiver sido inicializado com AfxInitExtensionModule.
hMódulo
Especifica o handle do módulo DLL.
hResource
Especifica o handle do módulo de recurso personalizado DLL.
pFirstSharedClass
Um apontador para informação (a CRuntimeClass estrutura) sobre a primeira classe de runtime do módulo DLL. Usado para fornecer o início da lista de classes em tempo de execução.
pFirstSharedFactory
Um apontador para a primeira fábrica de objetos do módulo DLL (um COleObjectFactory objeto). Usado para fornecer o início da lista de fábrica da classe.
Observações
As DLLs de extensão MFC precisam de fazer duas coisas na sua DllMain função:
Ligue para AfxInitExtensionModule e verifique o valor de retorno.
Crie um
CDynLinkLibraryobjeto se a DLL estiver a exportar objetos CRuntimeClass ou tiver os seus próprios recursos personalizados.
A AFX_EXTENSION_MODULE estrutura é usada para armazenar uma cópia do estado do módulo DLL da extensão MFC, incluindo uma cópia dos objetos de classe em tempo de execução que foram inicializados pela DLL de extensão MFC como parte da construção normal de objetos estáticos executada antes DllMain de ser introduzida. Por exemplo:
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;
A informação do módulo armazenada na 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;
}
Requerimentos
Cabeçalho: afx.h
Consulte também
Estruturas, estilos, retornos de chamada e mapas de mensagens
AfxInitExtensionModule
AfxTermExtensionModule