关于MFC视图文档框架的理解-1
一、单个文档和多个文档的区别:
MFC分为对话框程序,单文档程序和多文档程序。
单个文档程序:一个主框架内仅允许打开一个视图,若要打开另一个,则当前的文档必须得关闭。单文档程序可以打开不同格式的文档。
对于单文档程序,主框架(CFrameWnd)、视图(CView)、文档(CDocument)被文档模板CSingleDocTemplate粘合在一起。
多个文档程序:一个主框架内可以打开多个视图。
对于多文档程序,主框架(CMDIFrameWnd)是单独存在的,子框架(CMDIChildWnd)、视图(CView)、文档(CDocument)被文档模板CMultiDocTemplate粘合在一起的。
二、单文档模板和多文档模板的区别:
文档模板是管理能打开文件类型的,不同的文件类型就需要不同的文档模板。
一个CSigleDocTemplate和CMultiDocTemplate都只能打开一种类型的文档,区别是前者只能打开一个文档,后者可以打开多个同类格式的文档。
因此如果需要程序支持多种格式的文档,必须添加不同的文档模板。
三、CDocument、CView、CChildFrameWnd是由谁创建的?
是由文档模板创建的。
CMultiDocTemplate* pDocTemplate;
pDocTemplate=new CMultiDocTemplate(ID_MAINFRAME,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CMyFrame),RUNTIME_CLASS(CMyView));//这一句只是初始化一个文档模板,并没有创建文档视图框架对象,因为这些对象是在后面由文档模板调用OpenDocumentFile()创建的。
AddDocTemplate(pDocTemplate);//文档模块是文档类型模板,决定了该程序支持多少种文件类型
关于MFC视图文档框架的理解-1的更多相关文章
- MFC单文档框架分析及执行流程(转)
原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...
- mfc创建文档视图过程
一.如何创建文档视图界面: 创建新的文档视图界面,只需要调用CDocTemplate::OpenDocumentFile(strpath)即可.(strpath为要打开的文档路径,如果是NULL,则生 ...
- VC-基础:MFC单文档程序架构解析
MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一一个在程序形成的时候就存在 ...
- MFC单文档程序架构解析
MFC单文档程序架构解析 MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一 ...
- MFC单文档
一.创建并运行MFC单文档程序 1.创建单文档程序 这里使用的是VS2017.首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL& ...
- MFC单文档程序结构
MFC单文档程序结构三方面: Doc MainFrame View
- VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误
1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...
- MFC多文档无法显示可停靠窗格
当我们使用MFC多文档创建项目时,我们可停靠窗格关闭之后就无法显示了.即使重新编译项目也无法再次显示它们. 原因:因为MFC多文档把这些设置存储在注册表 “HKEY_CURRENT_USER \ SO ...
随机推荐
- 开源项目之easyrtmp
https://github.com/bigbluebutton86/EasyRTMP/tree/master/src http://dl.linux-sunxi.org/SDK/A20/A20_SD ...
- chef简介
Chef 的简单介绍 Chef 主要分为三个部分 Chef Server.Workstation 以及 Chef Client.用户在 Workstation 上编写 Cookbook.然后,通过 k ...
- WPF使用X:Static做多语言支持
让程序支持多语言,一般把需要显示的字符串保存在一个资源类的static属性中. <!--[if !supportLists]--> <!--[endif]--> 微软的WPF程 ...
- python 文字识别 之 pytesseract
pytesseract资源 链接:https://pan.baidu.com/s/1eTsqhsY 密码:j0yo 安装时前面一直next就可以了,直到这一步,勾选Math和Chinese,支持计算和 ...
- MongoDBTemplate多条件查询的问题
问题: 在使用Spring Data MongoDB 进行条件查询数据时,发现条件判断不起作用,结果会返回所有的数据. Criteria criteria = new Criteria(); crit ...
- python 上传文件下载图片
python 2.7 poster-0.8.1 requests-2.7.0 #coding:utf-8import urllibimport urllib2import sysimport time ...
- Android N API预览
Android N for Developers 重要的开发人员功能 多窗体支持 通知 JIT/AOT 编译 高速的应用安装路径 外出瞌睡模式 后台优化 Data Saver 高速设置图块 API 号 ...
- importlib 模块导入
#1.动态导入模块 script_name = scripts.utils module = importlib.import_module(script_name) # 动态导入相应模块 #2.模块 ...
- sublime 快捷键,左菜单乱码
sublime 快捷键安装 packagecontrol https://packagecontrol.io/installation#st3 import urllib.request,os,has ...
- twig 截取字符串
<p>{{content|slice(0,100)}}</p> slice()截取content变量值,从0到100