第03章 MFC应用程序框架.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第03章 MFC应用程序框架

第3章 MFC应用程序框架 本章主要内容: MFC的基本应用程序框架类 Windows应用程序的文档/视图结构 文挡/视图结构的应用程序框架类 对象的动态创建 MFC是一个框架(Framework)式类库,框架式类库同一般的类库的不同之处在于,库中的各个类之间是有联系的,它们是按照框架所定义的模式去协作完成任务的。所以,要学习MFC,首先就要了解各个类之间是如何协作的以及它们的接口。 3.1? 早期的应用程序框架 及其MFC类 应用程序的框架由两个对象组成:应用程序类CWinApp的派生类对象和框架窗口类CFrameWnd的派生类对象,后者作为一个成员对象嵌在前者之中 。 MFC程序的运行步骤(主要是初始化) 打开一个MFC APPWizard(exe)工程,跟踪其执行步骤,可以发现,是以下顺序: 1) CXXApp中的全局变量定义 CXXApp theApp; 2)调用CXXApp构造函数 CXXApp ::CXXApp(){} 3)进入Winmain函数(_tWinMain为宏,值为WinMain) _tWinMain(){} 4)完成初始化工作:包括窗口类注册、窗口产生、显示和更新 pThread-InitInstance() 对于MFC程序,MainFrame,View,ToolBar,Controlbar等都是窗口,所以下面的窗口注册与创建、显示等要反复调用多次,一次对应一个窗口 (1)注册窗口类 AfxEndDeferRegisterClass (2)创建窗口 CMainFrame::PreCreateWindow()//反复调用一次是给我们修改窗口属性的机会 CFrameWnd::Create() (3)消息循环 PumpMessage() 涉及到MFC函数的源文件位置 根目录:找到您安装VC98下MFC的位置,比如我的机子上为:D:\Program Files\Microsoft Visual Studio\VC98\MFC。下面提供的就是相对路径了。 CWinApp构造函数: MFC\SRC\APPCORE.CPP AfxWinMain函数:MFC\SRC\WINMAIN.CPP AfxEndDeferRegisterClass函数: MFC\SRC\APPCORE.CPP CFrameWnd::PreCreateWindow()函数:MFC\SRC\WINFRM.CPP CFrameWnd::Create()函数:MFC\SRC\WINFRM.CPP CWnd::CreateEx()函数:MFC\SRC\WINCORE.CPP CWinThread::Run()方法:MFC\SRC\THRDCORE.CPP 文档类 文档是一个CDocument派生对象,它负责存储应用程序的数据,并把这些信息提供给应用程序的其余部分。CDocument类对文档的建立及归档提供支持并提供了应用程序用于控制其数据的接口, 一个文档可以有多个视图,每一个文档都维护一个与之相关视图的链表(CptrList类型的 m_viewList实例)。类CDocument中可遍历对应的视图: POSITION CDocument::GetFirstViewPosition() const CView* CDocument::GetNextView (POSITION rPosition) const 文档与视图进行通信的方式是调用文档类的UpdateAllViews函数 。 UpdateAllViews函数遍历视图列表,对每个视图都调用其OnUpdate函数实现视图的更新显示。 视图类 CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在文档/视图架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的数据取出后显示给用户; (2) 接受用户对文档中数据的编辑和修改; (3) 将修改的结果反馈给文档类,由文档类将修改后的内容保存到磁盘文件中。 文档负责了数据真正在永久介质中的存储和读取工作,视图呈现只是将文档中的数据以某种形式向用户呈现,因此一个文档可对应多个视图。 一个视图只能被连接到一个文档,但是一个文档可以有多个视图与之相连接 视图类中成员函数GetDocument CView类首先要维护文档与视图之间的关联,它通过CDocument* m_pDocument保护性成员变量记录关联文档的指针,并提供CView::GetDocument接口函数以使得应用程序可得到与视图关联的文档。而在CView类的析构函数中,需将对应文档类视图列表中的本视图删除: CView::~CView() {  if (m_

文档评论(0)

sb9185sb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档