管理MFC模块状态数据
本文讨论 MFC 模块状态数据,并且此状态如何更新,在执行流 (路径代码通过应用程序实现,在执行) 时进入和离开模块。 与 AFX_MANAGE_STATE 和 METHOD_PROLOGUE 宏的开关模块状态还讨论。
备注
该术语 “模块”在此引用可执行程序,或者到 DLL (或设置 DLL) 独立应用程序的其余部分运行,但是,使用 MFC DLL 的共享副本。Activex 控件是模块的典型示例。
如下图所示, MFC 的状态数据提供用于应用程序的每个模块。 此数据的示例包括 windows 实例句柄 (用于加载资源),指向当前 CWinApp 和应用程序的 CWinThread 对象, OLE 模块引用计数和维护窗口对象处理和 MFC 对象之间相应实例的连接的各种映射。 但是,那么,当应用程序使用多个模块时,每个模块状态数据不是针对整个系统级应用程序。 相比之下,每个模块其 MFC 状态数据自己的私有副本。
单模块的状态数据(应用程序)
模块的状态数据结构中包含和通过指针始终可对该结构。 如下图所示,在执行流输入一个特定模块,模块的状态,必须为 “当前”或 “活动”状态。 因此,每个线程对象具有指向该应用程序启用状态机制。 使此指针始终会更新到管理应用程序的全局状态和维护每个模块的状态完整性非常重要。 全局状态的错误管理可能导致不可预知的应用程序的行为。
多模块状态数据
换言之,每个模块到正确切换负责在模块状态之间其入口点。 “入口点”是执行流可以输入模块的代码的所有位置。 入口点包括: