Compartir a través de


Administrar los datos de estado de los módulos MFC

En este artículo se abordan los datos de estado de los módulos MFC y cómo actualizan a este estado cuando el flujo de ejecución (el código de ruta toma con una aplicación en ejecución) entra y sale de un módulo. Describen los estados de módulos de conmutación con macros de AFX_MANAGE_STATE y de METHOD_PROLOGUE también.

Nota

El término “módulo” aquí hace referencia a un programa ejecutable, o a un archivo DLL (o conjunto de archivos DLL) que funciona independientemente del resto de la aplicación, pero usa una copia compartida de MFC DLL.Un control ActiveX es un ejemplo típico de un módulo.

Como se muestra en la ilustración siguiente, MFC tiene datos de estado para cada módulo utilizado en una aplicación. Los ejemplos de estos datos incluyen los identificadores de instancia de Windows (utilizados para cargar recursos), punteros a CWinApp y los objetos actuales de CWinThread de una aplicación, los recuentos de OLE de referencia de módulo, y una variedad de mapas que mantener las conexiones entre los controladores de objeto de Windows y las instancias correspondientes de objetos MFC. Sin embargo, cuando una aplicación utiliza varios módulos, los datos de estado de cada módulo no es una de ancho. En su lugar, cada módulo tiene su propia copia privada de los datos de estado de MFC.

Datos de estado de un solo módulo (aplicación)

Datos de estado de un solo módulo (aplicación)

Los datos de estado de un módulo se contiene en una estructura y siempre está disponible a través de un puntero a esa estructura. Cuando el flujo de ejecución escribe un módulo determinado, como se muestra en la ilustración siguiente, que el estado del módulo debe ser “actual” o estado “real”. Por consiguiente, cada objeto de subproceso tiene un puntero a la estructura eficaz del estado de esa aplicación. Conservar este puntero actualizado siempre es vital para administrar el estado global de la aplicación y mantener la integridad del estado de cada módulo. Administración incorrecta de estado global puede causar un comportamiento de aplicación imprevisible.

Datos de estado de varios módulos

Datos de estado de varios módulos

Es decir cada módulo es responsable correctamente de cambiar entre estados de módulos en absoluto de los puntos de entrada. Un “punto de entrada” es cualquier lugar donde el flujo de ejecución puede escribir el código del módulo. Entre los puntos de entrada:

Vea también

Conceptos

Temas generales de MFC