MFC中文档视图框架和文档模板之间的关系 四个类常用的成员函数.docxVIP

MFC中文档视图框架和文档模板之间的关系 四个类常用的成员函数.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC中文档视图框架和文档模板之间的关系 四个类常用的成员函数

文档对象:是用来保存数据的。?视图对象:是用来显示和编辑数据的。?应用程序框架:框架是用来管理不同文档显示界面的。例如你有一个数据网格显示界面,还有一个图形显示界面,它们的数据可能都来自你的文档,但是视图不同,怎么办用框架。为什么不用视图?为的是把界面管理独立的拿出来。文档模板:MFC把文档/视图/框架视为一体,只要你创建文档/视图框架结构的程序,必定会为你创建这三个类。这个工作在在应用程序初始化时完成,如下:[cpp]?view plaincopyBOOL?CMyHtmlApp::InitInstance()??{?????CSingleDocTemplate*?pDocTemplate;?????pDocTemplate?=?new?CSingleDocTemplate(?????IDR_MAINFRAME,??????RUNTIME_CLASS(CMyHtmlDoc),??????RUNTIME_CLASS(CMainFrame),???????//?main?SDI?frame?window??????RUNTIME_CLASS(CMyHtmlView));??????AddDocTemplate(pDocTemplate);???}??单文档:就是一次只能打开一个文件,和你的文档类型支持的多少无关。你完全可以做一个单文档的支持所有图象格式的程序,只不过它一次只能打开一个文档罢了。多文档:就是你可以打开多个文件,和文档类型也无关。你也可以作一个可以同时打开多个文档的程序,但它只支持一种文档类型。何时需要文档/视图框架结构?首先你可以不使用文档视图这种框架结构,即便是在MFC中。你可以在你需要的时候选择使用这种方式。你可以完成一个只有视图没有文档的程序,例如一个基于对话框的应用。??哪什么时候需要呢?当你想将你的数据层和界面层分开的时候。??? 通常我们对数据的操作放在文档类中,例如存取,打开,关闭。在这里你可以尽情的对你的数据进行操作,如果你需要,在对数据进行了改变后,对视图做一下更新,那么程序会将你对数据所做的改变呈现给你的程序的用户。由此可见视图的作用就是提供一个用户和数据之间进行数据交换的界面,它的作用就是在需要的时候显示数据,并在需要的时候提供输入界面。当用户输入后实际的数据操作工作是由文档类来做的。??那框架类有在做什么呢?框架类是为了便于管理你的文档类和视图类而存在的。通常我们的操作都是通过视图窗口完成,消息由视图进行接收并且进行处理。所以消息映射定义一般在视图中。但如果一个应用同时拥有多个视而当前活动视没有对消息进行处理则消息会发往框架窗口。另外框架窗口可以方便的处理非窗口消息。再来说一边典型的单文档程序的生成过程(不完整,只挑有用的)?1、???? CwinApp对象被建立,这个对象是全局的且只能有一个,名字叫theApp。这时你可以完成一些工作,例如对注册表的操作,(如果你想写一个不修改注册表的软件,需要在这里做写工作)2、???? 在InitInstance()函数中创建文档模板,文档模板以CruntimClass静态成员指针做构造参数。3、???? 执行MFC框架默认的命令行参数。命令行参数有很多其中之一是,Cmd1它会创建一个新文件。(如果没有命令行参数则执行默认的ID_FILE_NEW)4、???? 文档模板的实例根据三个类的动态创建信息创建出文档、视图、框架。5、???? 对文档、视图、框架进行初始化。文档,视图,框架之间的相互作用。??? 由上面的典型的单文档程序的生成过程可以看出一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd框架类,CDocument文档类,CView视图类。我将四个类常用的成员函数列出,大家一看便知。不过参数,返回值均未列出,大家可以从MSDN上了解更多。几个重要的虚函数也未做说明。大家自己看吧。通过全局函数AfxGetApp可以得到CWinApp应用类的全局对象theApp.CwinApp[cpp]?view plaincopy//数据成员:??m_pszAppName?应用程序名称??m_pszExeName?可执行文件的名称??m_pszProfileName?INI文件的名??m_pszRegistryKey?注册表或INI文件的KEY??m_hInstance?实例的句柄??m_pMainWnd?为框架窗口指针??//成员函数:??InitInstance()???//初始化??ParseCommandLine()?//完成命令行的解析处理??CFrameWnd??GetActiveDocument()?????//得到当前活动文档指针??GetActiveView()?????//得到当前活动视指针??SetActiveView()

文档评论(0)

hhuiws1482 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档