mfc创建文档视图过程
一、如何创建文档视图界面:
创建新的文档视图界面,只需要调用CDocTemplate::OpenDocumentFile(strpath)即可。(strpath为要打开的文档路径,如果是NULL,则生成新的文档)。
二、上面这个函数为何能够生成文档视图对象?
因为
1.它调用了CDocTemplate::CreateNewDocument()函数生成了CDocument对象;
2.它调用了CDocTemplate::CreateNewFrame()函数生成了CFrameWnd对象;
3.在生成文档框架的过程中又创建了CView对象。(因为文档框架是文档视图的父窗口,它们之间存在包含与被包含关系)
最终它生成了界面。
三、为何我在打开多文档软件时,系统自动给我生成了一个空白文档?如何不让它自动生成,我自己生成?
系统在开启时会默认调用CWinAPP:OnFileNew()这个响应函数(且这个函数是个虚函数),这个事件响应函数默认会调用CDocTemplate::OpenDocumentFile(strpath)函数生成一个空白文档。如果要取消默认,重载这个OnFileNew()函数,并且什么也不做即可。
如果你要自己生成,你得获取CWinApp内保存的文档模板对象,然后调用它的OpenDocumentFile(strpath)即可。
四、如何获取文档模板对象呢?
文档模板对象列表保存在CWinApp里的一个CDocManage的一个成员变量中。通过遍历这个成员遍历即可获取文档模板对象。
遍历由CWinApp::GetFirstDocTemplatePosition()和CWinApp::GetNextDocTemplate()函数得到。
五、CWinAPP和CDocTemplate都有OpenDocumentFile()函数,到底怎么回事?
前者实质是调用后者实现文档视图界面的创建。
CView、CDocument、CMDIChildFrame、CMDIDocTemplate、CDocManager、CWinApp之间的关系:
CView:
CDocument* GetDocument();//获取与视图相关的文档对象
CFrameWnd* GetParentFrame();//获取视图的框架(文档框架)
CDocument:
CDocTemplate* GetDocTemplate()//获取文档的文档模板
POSITION GetFirstViewPosition();
CView* GetNextView(position);//遍历文档相关的视图
参考文献:1.https://www.cnblogs.com/stevengerrard/p/3925422.html
2.https://blog.csdn.net/zhanghefu/article/details/2546601
mfc创建文档视图过程的更多相关文章
- MFC单文档视图程序简介
在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...
- mfc学习---文档视图架构
MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用.单文档应用(SDI)和多文档应用(MDI). 一般情况下,采用文档/视结构的应用程序至少应由以下对象组成: 1. ...
- MFC单文档视图中嵌入GLFW窗口
开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...
- MFC单文档视图拆分窗口和相关链接
第一步:准备2个视图类(如CTViewOne, CTViewTwo) 第二步:在CMainFrame类的头文件中添加数据成员变量: //MainFrm.h protected: CSplitterWn ...
- 深入分析MFC文档视图结构(项目实践)
k_eckel:http://www.mscenter.edu.cn/blog/k_eckel 文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer ...
- MFC文档视图结构学习笔记
文档/视图概述 为了统一和简化数据处理方法,Microsoft公司在MFC中提出了文档/视图结构的概念,其产品Word就是典型的文档/视图结构应用程序 MFC通过其文档类和视图类提供了大量有关数据处理 ...
- MFC中 创建基于CFormView的文档视图程序
在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...
- MFC单文档多视图程序设计与Splitter拆分窗口
1. 创建不同的子frame. 在文档视图程序中 CMainFrame(class CMainFrame : public CMDIFrameWndEx) 继承自 CMDIFrameWnd (CMDI ...
- 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序
在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...
随机推荐
- Ajax跨域请求,无法传递及接收cookie信息解决方案
最近的项目中涉及到了应用ajax请求后台系统登录,身份认证失败,经过不断的调试终于找到解决方案. 应用场景: 项目测试环境:前端应用HTML,js,jQuery ajax请求,部署在Apache服务器 ...
- 粗体EditorGUI
GUILayout.Label ("Shading", EditorStyles.boldLabel); EditorGUILayout.Space (); InspectorSu ...
- mysql主从:主键冲突问题
1.检查从库 show slave status \G; Slave_IO_Running: YesSlave_SQL_Running: No 2.出现类似如下的报错: Last_SQL_Error: ...
- Socket网络编程TCP、UDP演示样例
Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...
- 初步认识Spring MVC框架
Spring MVC 框架和Struts2等一样属于MVC框架,用于处理页面和后台的交互,据说它的效率要高于Struts2.下面县先说一下Spring MVC的结构,Spring MVC主要由Disp ...
- ASP连接数据库SQLServer
Set conn=Server.CreateObject("adodb.connection")Set conn1=Server.CreateObject("adodb. ...
- 【题解】POJ2279 Mr.Young′s Picture Permutations dp
[题解]POJ2279 Mr.Young′s Picture Permutations dp 钦定从小往大放,然后直接dp. \(dp(t1,t2,t3,t4,t5)\)代表每一行多少人,判断边界就能 ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- Cocos2d-x 3.1 环境搭建和创建project
Cocos2d-x 3.x改版了非常多,之前搭过一次环境,可是没截图.这次趁着重装电脑,一边搭建一边截图.此博文仅仅是为了记录而不是为了教学,所以很多其它讲的是搭建过程.本文基本上參考这篇博客:htt ...
- curl使用说明
默认curl使用get请求,可以使用-d方式指定使用post方式传递数据 https://www.cnblogs.com/gbyukg/p/3326825.html