CWinApp类CMultiDocTemplate类CDocument类CView类的关系
转自:http://blog.csdn.net/bboot/article/details/26884011
不得不转,瞬间搞清了很多问题,短小精悍
1.CWinApp类
它包含并管理着应用程序的文档/视窗的所有信息。它有一个成员变量CDocManager*m_pDocManager,此变量是文档/视窗的管理器;m_templateList 是CDocManager里的一个列表,此列表里保存了所有文档模板的指针,当用户调用CWinApp::AddDocTemplate(pDocTemplate)后该pDocTemplate存入了CWinApp::m_pDocManager::m_templateList这个链表里。
下面的两个函数是对 m_templateList的查找和遍历操作:
CWinApp::GetFirstDocTemplatePosition()//获得第一个文档模板的 POSITION类型的位置
CWinApp::GetNextDocTemplate(POSITION&pos) //获得pos位置的文档模板,并将下一个模板的POSITOON位置传给pos;
2.CDocTempplate类
一般常用其派生类CSingleDocTemplate类和CMultiDocTemplate类
(1).CSingleDocTemplate类 (继承与CDocTempplate类)
一次只能打开一个文档且对应一个视图或者多个,可以打开多种类型的文档(打开一种关闭另一种文档)
(2).CMultiDocTemplate类 (继承与CDocTempplate类)
这是一个极重要的类。CMultiDocTemplate::m_docList保存着所有该种文档的文档实例的指针列表。下面两个函数用于维护CMultiDocTemplate::m_docList数据
CMultiDocTemplate::AddDocument(CDocument* pDoc);
CMultiDocTemplate::RemoveDocument(CDocument* pDoc);
而下面的两个函数用于遍例该文档类型所有文档实例。
CMultiDocTemplate::GetFirstDocPosition()const;
CMultiDocTemplate::CDocument*GetNextDoc(POSITION&rPos)const;
3.CDocument类
CDocument每一个文档实例可有多个视与之相对应。
CDocument::m_viewList用来保存所有与此文档实例相关的View
CDocument::GetDocTemplate可获得相应的文档模板例如CMultiDocTemplate类型的文档模板的实例;
4、CView类
例如在多文档视图的框架下每一个CMDIChildWnd有一个View
CView::GetDocument可获得与此视相关的CDocument
CView::GetParentFrame()可获得CMDIChildWnd;
通过以上分析可见CWinApp,CMDIChildWnd,CView,CDocument,CMultiDocTemplate之间知道其中一个实例必可知道其他所有几个实例,CWinApp统领全局,任何时候只要获得CWinApp实例,则所有的文档模板文档实例,视图,Frame窗口均可被枚举出来。AfxGetApp()获得CWinApp实例指针。
CWinApp类CMultiDocTemplate类CDocument类CView类的关系的更多相关文章
- UML类图画法及其之间的几种关系(转)
UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
- Java语言中,类所拥有的“孩子”,他们的关系是怎样的
学习了一本有关Java的书.初步了解了一些面向对象的内容. java是由一个个的类组成的,这些类组成了java程序.类之下有他的孩子,这四个孩子分别是: 成员变量:就相当于一个个的变量,他由stati ...
- C#中Monitor类、Lock关键字和Mutex类
线程:线程是进程的独立执行单元,每一个进程都有一个主线程,除了主线程可以包含其他的线程.多线程的意义:多线程有助于改善程序的总体响应性,提高CPU的效率.多线程的应用程序域是相当不稳定的,因为多个线程 ...
- E:in-range伪类选择器与E:out-of-range伪类选择器
E:in-range伪类选择器用来指定当元素的有效值被限定在一段范围之内(通常通过min属性值与max属性值来限定),且实际输入值在该范围内时使用的样式.E:out-of-range伪类选择器用来指定 ...
- UML类图画法及其之间的几种关系
最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的几种关系:泛化(Generaliz ...
- php面向对象之抽像类、接口、final、类常量
一.抽像类(abstract) 在我们实际开发过程中,有些类并不需要被实例化,如前面学习到的一些父类,主要是让子类来继承,这样可以提高代码复用性语法结构: 代码如下 复制代码 ab ...
- YTU 2618: B 求类中数据成员的最大值-类模板
2618: B 求类中数据成员的最大值-类模板 时间限制: 1 Sec 内存限制: 128 MB 提交: 430 解决: 300 题目描述 声明一个类模板,类模板中有三个相同类型的数据成员,有一函 ...
随机推荐
- Java异常框架设计
什么是异常? 异常(exception)应该是异常事件(exceptional event)的缩写.异常定义:异常是一个在程序执行期间发生的事件,它中断正在执行的程序的正常的指令流.当在一个方法中发生 ...
- 【BZOJ】3403: [Usaco2009 Open]Cow Line 直线上的牛(模拟)
http://www.lydsy.com/JudgeOnline/problem.php?id=3404 裸的双端队列.. #include <cstdio> #include <c ...
- PHP 中 json_encode中文处理、urlencode方法、post中文乱码
当使用php自带的json_encode对数据进行编码时,中文都会变成unicode,导致不可读.如:对字符串”厦门“进行json_encode后,输出的是"\u53a6\u95e8&quo ...
- 8、手把手教React Native实战之ReactJS组件生命周期
1.创建阶段 getDefaultProps:处理props的默认值 在React.createClass调用 2.实例化阶段 React.render(<HelloMessage 启动之后 g ...
- Windows 8.1 浏览器中 SkyDrive 的改名与隐藏
在 Windows 8.1 中已经整合了 SkyDrive ,在中文版中 SkyDrive 的名字总是感觉不协调,可是在属性里面可以调整位置却不能修改名称,怎么办呢? 打开注册表,找到 HKEY_CL ...
- 浅析PageRank算法(转)
浅析PageRank算法 本文首先会讨论搜索引擎的核心难题,同时讨论早期搜索引擎关于结果页面重要性评价算法的困境,借此引出PageRank产生的背景.第二部分会详细讨论PageRank的思想来源.基础 ...
- Spring容器初始化的时候如何添加一个定时器?
昨天遇到这个问题,在项目启动的时候添加一个定时器隔一段时间扫描有没有定时发送的邮件(当然也可以是你自己的业务逻辑),也在网上找了资料,加上自己的修改,终于成功了.所以来做个记录. 1.ServletC ...
- VB 十六进制转汉字的函数
Public Function HexToStr(ByVal strs As String) As String Dim i As Integer, tmp As String, n If Len(s ...
- Java 之图形验证码
图形验证码作用 防止恶意注册 防暴力破解 Java 与图片相关的类: Image, ImageIO, BufferedImage, Icon, ImageIcon public static void ...
- java配置文件properties,yml,一般文件
JAVA编写配置文件的几种方式: JAVA配置文件,一般都放在resource目录下,无论是下面提到的properties.yml还是普通的txt等文件. 在打成jar包之后,只需要jar包程序就可运 ...