Compartilhar via


Suporte para contextos de ativação no estado do módulo MFC

O MFC cria um contexto de ativação usando um recurso de manifesto fornecido pelo módulo do usuário. Para obter mais informações sobre como os contextos de ativação são criados, consulte os seguintes tópicos:

Comentários

Ao ler esses tópicos do SDK do Windows, observe que o mecanismo de contexto de ativação do MFC se assemelha ao contexto de ativação do SDK do Windows, exceto que o MFC não usa a API de Contexto de Ativação do SDK do Windows.

O contexto de ativação funciona em aplicativos MFC, DLLs de usuário e DLLs de extensão MFC das seguintes maneiras:

  • Os aplicativos MFC usam a ID do recurso 1 para o recurso de manifesto. Nesse caso, o MFC não cria seu próprio contexto de ativação, mas usa o contexto de aplicativo padrão.

  • As DLLs de usuário do MFC usam a ID do recurso 2 para o recurso de manifesto. Aqui, o MFC cria um contexto de ativação para cada DLL de Usuário, para que DLLs de usuário diferentes possam usar versões diferentes das mesmas bibliotecas (por exemplo, a biblioteca controles comuns).

  • As DLLs de extensão MFC dependem de seus aplicativos de hospedagem ou DLLs de usuário para estabelecer seu contexto de ativação.

Embora o estado de contexto de ativação possa ser modificado usando os processos descritos em Usando a API de Contexto de Ativação, o uso do mecanismo de contexto de ativação MFC pode ser útil ao desenvolver arquiteturas de plug-in baseadas em DLL em que não é fácil (ou não possível) alternar manualmente o estado de ativação antes e depois de chamadas individuais para plug-ins externos.

O contexto de ativação é criado em AfxWinInit. É destruído no destruidor AFX_MODULE_STATE. Um identificador de contexto de ativação é mantido em AFX_MODULE_STATE. (AFX_MODULE_STATE é descrito em AfxGetStaticModuleState.)

A macro AFX_MANAGE_STATE ativa e desativa o contexto de ativação. AFX_MANAGE_STATE está habilitado para bibliotecas MFC estáticas, bem como DLLs de MFC, a fim de permitir que o código MFC seja executado no contexto de ativação adequado selecionado pela DLL do usuário.

Confira também

Contextos de ativação
Manifestos de aplicativo
Manifestos do assembly
AfxWinInit
AfxGetStaticModuleState
AFX_MANAGE_STATE