MFC Document/View 2

1.概述

Document/View是集成在Viaual C++中基于MFC的一个框架。实现对数据的操作显示。

主要包含三部分:

CFrameWnd(框架窗口):所谓框架窗口是指包括菜单、工具栏、状态栏和窗口客户区的整个应用程序的主窗口,相当于简单应用程序框架中所提到的主窗口。

CDocument(文档):数据作为文档类的数据成员,由文档类来进行集中管理,而且文档类将直接与磁盘相联系,实现数据存储和读取。

CView(视图):派生于Cwnd类,用于管理文档/视图结构中的窗口客户区。专门用于对应用程序的数据进行呈现和编辑,在视图类中有一个很重要的函数OnDraw(),是用于进行应用程序数据显示,一般在派生类中都要重写。OnDraw()函数将集中管理所有的数据的显示工作。

2.Document/View结构中的相关类

一般情况下,一个Document/View结构的运用程序会包含如下5个类:CWinApp,CFrameWnd,CDocument,CView,CDocTemplate

2.1  CWinApp

CWinApp对象就代表程序本体。封装了MFC中有相当固定行为的操作,如MFC程序的初始化顺序:

  1. CMyWinApp theApp;  ----->这是程序中全局变量,它是唯一的,先于WinMain()函数构造完成,CWinApp中的某些成员变量因为theApp这个全局变量的诞生而得到配置和初值;
  2. theApp配置完,AfxWinAMain()登场,首先调用全局函数AfxGetApp()函数,取得指向theApp的指针;
  3. AfxWinInit(···)执行;
  4. pApp->InitApplication(),该函数一般不会被重写,所以调用的是CWinApp::InitApplication(),作用是初始化CDocManager类。【CDoManager类维护一个存放CDocTemplate指针的链表,CDocTemplate对象在InitInstance中创建并加入到链表中】
  5. pApp->InitInstance(),每个子类都要重写InitInstance(),因为在基类中无定义。其中开始创建框架窗口(p=new CMyFrameWnd();p->ShowWindow()//显示窗口;                           p->UpdateWindow()//这里发出一个WM_PAINT?暂时不知道干嘛)
  6. pApp->Run(),“程序的源头活水”,进入消息循环。子类没有重写Run(),所以调用(及依次调用)的是CWinApp::Run()·······>CWinThread::Run()······>CWinThread::PumpMessage()······>::TranslateMessage()和::DispatchMessage()消息处理

要想新创建一个程序直接继承CWinApp即可,生产app的流水线已经装配好。

2.2  CFrameWnd

框架窗口是指包括菜单、工具栏、状态栏和窗口客户区的整个应用程序的主窗口,相当于简单应用程序框架中所提到的主窗口。在MFC程序中,一般并不需要经常对CFrameWnd类进行操作,给View提供客户区和一些可操作的菜单等;

2.3 CDocument

对数据进行集中管理。将数据作为它的成员数据,能和磁盘交互,将数据写入磁盘或从磁盘读取出来(依靠Serialize()函数完成数据存取任务)

a.维护一个指向文档模板的指针,该指针可以用来设置标题,文档被删除时通知文档模板等

b.维护一个指向打开的视图链表的指针,用于视图和文档通信

2.4 CView

对Document中的数据展示和编辑。用OnDraw()函数展示数据,但应用程序的数据却存放在文档类中,视图类通过函数GetDocument()返回指向文档类的指针,通过这个指针就可以访问到文档类中的公有数据成员。

2.5 CDocTemplate

文档模板类(CDocTemplate)的作用是集中管理CFrameWnd,CDocument和CView,将它们视为一个整体。同时还加载了菜单以及与菜单资源使用一个ID的快捷键等资源;

它一般派生出来个类:CMultiDocTemplate和CSingleDocTemplate,

3 一些重要的函数

*****************************************标题错误:CView类中的函数以及功能*

========================================

图片盗于http://blog.sina.com.cn/s/blog_62ce00c90100ld9h.html

========================================

时间: 2024-12-28 05:48:18

MFC Document/View 2的相关文章

MFC Document/View结构

==================================== 转自:http://blog.csdn.net/T_W_S/article/details/12657931 ===================================== 1 必备基础知识概述 1.1 MFC 文档视图结构程序结构总揽 当我们使用 MFC AppWizard 生成一个 MFC 程序,选用所有默认的设置(当然也是 Multiple Documents ,本文讨论主要基于 Multiple Doc

MFC Document/View 3

1.文件的打开与新建: 构造顺序:[1]Document;[2]Frame,引发一序列的调用,最后调用CFrameWnd::CreateView(),创建了view. 2. CDocTemplate.CDocument.Cview.CFrameWnd之间的关系

MFC解决View中添加控件闪烁

一.简介 我们经常会在我们的View类中添加各种类型的控件,列表控件就是最常用的了.但是我们发现添加控件的时候会,在窗口变化的时候会导致各种各样的闪烁,让我们烦恼异常.所以我对此找到新的解决方案. 二.步骤 新建工程->在最后选在类的时候我们把view选择CFormView,然后再在FormView上添加我们的控件.如果我们的工程已经建立了,那么我们重新定义一个FormView类,并把控件加入到FromView中.然后我们让这个FormView成为你已经创建好的View类的child控件,这样就

使用vs2010创建MFC C++ Ribbon程序

Your First MFC C++ Ribbon Application with Visual Studio 2010 Earlier this month, I put together my first C++ sample in about a hundred years. I did that using win32 and Visual Studio 2010. Why? Well, a surprising number of folks are doing real work

Meandering Through the Maze of MFC Message and Command Routing

Meandering Through the Maze of MFC Message and Command Routing Paul DiLascia Paul DiLascia is a freelance software consultant specializing in developing C++ applications for Windows. He is the author of Windows++: Writing Reusable Code in C++ (Addiso

MVC模式简介

MVC架构是一个复杂的架构,其实现也显得非常复杂.但是,我们已经总结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC架构的实现变得相对简单易行.Views可以看作一棵树,显然可以用Composite Pattern来实现.Views和Models之间的关系可以用Observer Pattern体现.Controller控制Views的显示,可以用Strategy Pattern实现.Model通常是一个调停者,可采用Mediator Pattern来实现. 现在让我们来了解一下MVC三个

[转载]WIKI MVC模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,此

魔改——MFC SDI转MDI

==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于出版.印刷或学术引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4286906.html =============

MFC消息响应机制 q

MFC消息响应机制分析 1 引言微软公司提供的MFC基本类库(Microsoft Foundation Classes),是进行可视化编程时使用最为流行的一个类 库.MFC封装了大部分Windows API函数和Windows控件,使得程序的开发变得简单,极大的缩短了程序的开发 周期.MFC独创的Document/View框架结构,能够将管理数据的代码和显示数据的程序代码分开,并且设计了 一套方便的消息映射和命令传递机制,方便程序员的开发使用.其中消息映射机制本身比较庞大和复杂,对 它的分析和了