Gerenciamento de dados do estado dos módulos do MFC
Este artigo analisa os dados do estado do MFC módulos e como esse estado é atualizado quando o fluxo de execução (o código de caminho recebe por meio de um aplicativo durante a execução) entra e sai de um módulo.Estados de módulo de switching com o AFX_MANAGE_STATE e METHOD_PROLOGUE as macros também é abordada.
Observação: |
---|
O termo "módulo" aqui refere-se para um programa executável ou uma DLL (ou conjunto de DLLs) que operam independentemente do restante do aplicativo, mas usa uma cópia compartilhada da DLL do MFC.Um controle ActiveX é um exemplo típico de um módulo. |
sistema autônomo mostrado na figura a seguir, o MFC tem dados de estado para cada módulo usado em um aplicativo.Exemplos de dados Windows instância alças (usadas para o carregamento de recursos), ponteiros para o corrente CWinApp e CWinThread objetos de um aplicativo, contagens de referência de módulo OLE e vários mapas que mantêm as conexões entre os identificadores de objeto do Windows e correspondentes instâncias de objetos do MFC. No entanto, quando um aplicativo usa vários módulos, os dados do estado de cada módulo não são aplicativos grande.Em vez disso, cada módulo tem sua própria cópia privada dos dados do estado do MFC.
Dados de estado de um módulo único (aplicativo)
Dados do estado do módulo estão contidos em uma estrutura e está sempre disponível por meio de um ponteiro para essa estrutura.Quando o fluxo de execução entra em um módulo específico, sistema autônomo mostrado na figura seguinte, estado do módulo que deve ser o estado "corrente" ou "eficiente".Portanto, cada objeto de segmento possui um ponteiro para a estrutura do estado efetivo desse aplicativo.Manter esse ponteiro atualizado em todas as vezes é vital para o estado global do aplicativo de gerenciamento e manutenção da integridade do estado do módulo de cada.Gerenciamento incorreto de estado global pode resultar em comportamento imprevisível do aplicativo.
Estado dados de vários módulos
Em outras palavras, cada módulo é responsável por corretamente alternando entre estados de módulo em todos os pontos de entrada.Um "ponto de entrada" é qualquer local onde o fluxo de execução pode inserir o código do módulo.Os pontos de entrada incluem: