转自: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类的关系的更多相关文章

  1. UML类图画法及其之间的几种关系(转)

    UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...

  2. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  3. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

  4. Java语言中,类所拥有的“孩子”,他们的关系是怎样的

    学习了一本有关Java的书.初步了解了一些面向对象的内容. java是由一个个的类组成的,这些类组成了java程序.类之下有他的孩子,这四个孩子分别是: 成员变量:就相当于一个个的变量,他由stati ...

  5. C#中Monitor类、Lock关键字和Mutex类

    线程:线程是进程的独立执行单元,每一个进程都有一个主线程,除了主线程可以包含其他的线程.多线程的意义:多线程有助于改善程序的总体响应性,提高CPU的效率.多线程的应用程序域是相当不稳定的,因为多个线程 ...

  6. E:in-range伪类选择器与E:out-of-range伪类选择器

    E:in-range伪类选择器用来指定当元素的有效值被限定在一段范围之内(通常通过min属性值与max属性值来限定),且实际输入值在该范围内时使用的样式.E:out-of-range伪类选择器用来指定 ...

  7. UML类图画法及其之间的几种关系

    最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的几种关系:泛化(Generaliz ...

  8. php面向对象之抽像类、接口、final、类常量

    一.抽像类(abstract)        在我们实际开发过程中,有些类并不需要被实例化,如前面学习到的一些父类,主要是让子类来继承,这样可以提高代码复用性语法结构:  代码如下 复制代码   ab ...

  9. YTU 2618: B 求类中数据成员的最大值-类模板

    2618: B 求类中数据成员的最大值-类模板 时间限制: 1 Sec  内存限制: 128 MB 提交: 430  解决: 300 题目描述 声明一个类模板,类模板中有三个相同类型的数据成员,有一函 ...

随机推荐

  1. 【BZOJ】2016: [Usaco2010]Chocolate Eating(二分)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2016 这些最大最小显然是二分. 但是二分细节挺多的...这里注意二分的区间,可以累计所有的可能,然后 ...

  2. 67、Fragment实现Tab

    <LinearLayout .......... <FrameLayout android:id="@+id/id_content" android:layout_wi ...

  3. Linux下自动调整时间和时区与Internet时间同步

    (原文链接) 调整linux系统时间和时区与Internet时间同步一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的 ...

  4. cxGrid 隔行换色

    新建一个cxStyleRepository,分别建立几种Styles,如cxgrid_odd,cxgrid_even,cxgrid_selection等,并设置好它们的背景色.字体属性等. 在cxGr ...

  5. angularJS中的ng-show、ng-if指令

    angularJS中的ng-show.ng-hide.ng-if指令都可以用来控制dom元素的显示或隐藏. 1. ng-show和ng-hide 根据所给表达式的值来显示或隐藏HTML元素.元素会渲染 ...

  6. 170221、浅谈mysql的SQL的四种连接

    例子:   -------------------------------------------------  a表     id   name     b表     id   job   pare ...

  7. PAT 1014 Waiting in Line (模拟)

    1014. Waiting in Line (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...

  8. Fluent Ribbon 第七步 状态栏

    上一节,介绍了StartScreen的主要功能,本节介绍Ribbon的另外一个小功能StatusBar,状态栏是脱离ribbon之外单独存在,可以单独使用的控件 其基本代码定义如下: <Flue ...

  9. FineReport----单元格元素(数据列、公式、斜线)

    一.绑定.插入数据列 数据集字段绑定 二.公式 1.单元 格计算 1.两个单元格(C7,I7)和 2.等于某单元格的值 D7等C7单元格的值 3.C7/8(除) 4.除数被除数为零.空的处理 http ...

  10. mfc 对话框程序 托盘实现

    1 在头文件里面定义 消息 #define WM_SHOWTASK WM_USER+10 在主窗口类里面定义 一个变量 两个函数 a 变量 托盘结构体的变量 NOTIFYICONDATA m_nid; ...