Compartilhar via


Gerenciando os dados de estado dos módulos MFC

Este artigo discutir estado dados MFC módulo e como esse estado estar atualizar quando fluxo execução (caminho código executada por um aplicativo durante execução) inserir e deixar um módulo. Os estados de módulo para o trabalho com macros de AFX_MANAGE_STATE e de METHOD_PROLOGUE são discutidos também.

Dica

O termo “módulo” refere-se aqui para um programa executável, ou uma DLL (ou conjunto de dlls) que opera independentemente do restante do aplicativo, mas usa uma cópia compartilhada da DLL MFC.Um controle ActiveX é um exemplo típico de um módulo.

Conforme mostrado na seguinte figura, o MFC tem dados de estado de cada módulo usado em um aplicativo. Os exemplos desses dados incluem janelas instâncias de identificadores (usadas para carregar recursos), os ponteiros a CWinApp e os objetos atuais de CWinThread de um aplicativo OLE, contagens de referência do módulo, e uma variedade de mapas que mantêm as conexões entre os identificadores de objeto do windows e instâncias de objetos correspondentes MFC. No entanto, quando um aplicativo usa vários módulos, os dados do estado de cada módulo não são aplicativo largura. Em vez disso, cada módulo tem sua própria cópia privada de dados do estado de MFC.

Dados de estado de um único módulo (aplicativo)

Dados de estado de um único módulo (aplicativo)

Os dados do estado de um módulo são contidos em uma estrutura e estão sempre disponíveis por meio de um ponteiro a essa estrutura. Quando o fluxo de execução inserir um módulo específico, conforme mostrado na figura a seguir, que o estado do módulo deve ser “atual” ou “efetivo estado”. Consequentemente, cada objeto de thread tem um ponteiro para a estrutura efetivo do estado desse aplicativo. Manter esse ponteiro atualizado em todas as vezes é vital a gerenciar o estado global do aplicativo e a manter a integridade do estado de cada módulo. O gerenciamento incorreto de estado global pode resultar em comportamento imprevisível de aplicativo.

Dados de estado de vários módulos

Dados de estado de vários módulos

Ou seja cada módulo é responsável por corretamente alternar entre estados de módulo de qualquer dos pontos de entrada. “Um ponto de entrada” é qualquer local onde o fluxo de execução pode digitar o código do módulo. Os pontos de entrada incluem:

Consulte também

Conceitos

Tópicos MFC gerais