电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第9章MFC的状态

第9章MFC的状态_第1页
1/30
第9章MFC的状态_第2页
2/30
第9章MFC的状态_第3页
3/30
第9 章 MFC的状态 MFC 定义了多种状态信息,这里要介绍的是模块状态、进程状态、线程状态。这些状态可以组合在一起,例如MFC 句柄映射就是模块和线程局部有效的,属于模块-线程状态的一部分。 9.1 模块状态 这里模块的含义是:一个可执行的程序或者一个使用MFC DLL 的DLL,比如一个OLE 控件就是一个模块。 一个应用程序的每一个模块都有一个状态,模块状态包括这样一些信息:用来加载资源的Window s 实例句柄、指向当前CWinApp 或者CWinThread 对象的指针、OLE 模块的引用计数、Window s 对象与相应的MFC 对象之间的映射。只有单一模块的应用程序的状态如图9-1所示。 MFC 应用程序 线程对象 (Thread Object m_pModuleState )状态数据图9-1 (state data) 单模块状态示意图 m_pModuleState 指针是线程对象的成员变量,指向当前模块状态信息(一个AFX_MODULE_STATE 结构变量)。当程序运行进入某个特定的模块时,必须保证当前使用的模块状态是有效的模块状态──是这个特定模块的模块状态。所以,每个线程对象都有一个指针指向有效的模块状态,每当进入某个模块时都要使它指向有效模块状态,这对维护应用程序全局状态和每个模块状态的完整性来说是非常重要的。为了作到这一点,每个模块的所有入口点有责任实现模块状态的切换。模块的入口点包括:DLL 的输出函数;OLE/COM界面的成员函数;窗口过程。 MFC 应用程序线程对象(Thread Object)m_pModu leState状态数据(state data)模块1(Modu le1)状(sta态数据te data)模块2(Modu le2)状(sta态数据te data)模块1 范围模块2 范围图9-2 多模块的状态示意图 在讲述窗口过程和动态链接到MFC DLL的规则DLL 时,曾提到了语句AFX_MANAGE_STATE(Afx GetStaticModu leState( )),它就是用来在入口点切换模块状态的。其实现机制将在后面9.4.1 节讲解。 多个模块状态之间切换的示意图如图9-2 所示。 图9-2 中,m_pModu leState 总是指向当前模块的状态。 9.2 模块、进程和线程状态的数据结构 MFC 定义了一系列类或者结构,通过它们来实现状态信息的管理。这一节将描述它们的关系,并逐一解释它们的数据结构、成员函数等。 9 .2 .1 层次关系 图9-3 显示了线程状态、模块状态、线程-模块状态等几个类的层次关系: 线程状态用类_AFX_THREAD_STATE 描述,模块状态用类 AFX_MODULE_STATE 描述,模块-线程状态用类 AFX_MODULE_THREAD_STATE 描...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第9章MFC的状态

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部