C++ 编程 第十章 文档视图结构

合集下载

VC随笔文档视图结构

VC随笔文档视图结构

VC随笔文档视图结构使用断点调试观察MFC应用程序框架的创建过程:由于一个对象被创建时会自动调用构造函数,而一个窗口被创建时会调用OnCreate函数,因此在下列地方设置断点:1、应用程序类、文档类、框架窗口类、视图类的构造函数开始处(函数开始大括号所在行)2、CMy2DCADApp::InitInstance函数开始处、添加文档模板处、结尾处(函数结束大括号所在行)3、CMainFrame::OnCreate函数开始处、结尾处设置完断点后,按F5键,程序进入调试状态,可见在编辑窗口中,程序首先停止在应用程序类CMy2DCADApp 的构造函数中,说明程序最初构造的是应用程序类对象。

再按一次F5,编辑窗口中的黄色箭头停留在CMy2DCADApp::InitInstance函数的开始处,表明此时MFC框架中的WinMain函数开始执行,并调用了应用程序类的InitInstance函数。

再按一次F5,编辑窗口中的黄色箭头停留在InitInstance函数中添加文档模板对象处。

此时文档模板对象被创建。

再按一次F5,编辑窗口中的黄色箭头停留在文档类CMy2DCADDoc的构造函数开始处,表明开始创建文档对象。

再按一次F5,编辑窗口中的黄色箭头停留在框架窗口类CMainFrame的构造函数开始处,表明开始创建框架窗口类对象。

再按一次F5,编辑窗口中的黄色箭头停留在框架窗口类CMainFrame::OnCreate函数开始处,表明开始创建框架窗口。

再按一次F5,编辑窗口中的黄色箭头停留在视图类CMy2DCADView的构造函数开始处,表明开始创建视图类对象。

再按一次F5,编辑窗口中的黄色箭头停留在CMainFrame::OnCreate函数结尾处,表明视图窗口和框架窗口都已经创建完毕。

再按一次F5,编辑窗口中的黄色箭头停留在CMy2DCADApp::InitInstance函数的结尾处,表明程序初始化完毕。

第10章文档

第10章文档
10.2.2 程序框架中的主要类及相互关系
• 文档/视图结构的应用程序框架中,主要包含5个 类:CWinApp类、CFrameWnd类、CView类、 CDocument类和CDocTemplate类。
10.2.3 文档类、视图类核心函数及作用
• MFC在CDocument类和CView类中提供了一些相对比 较重要的函数,它们负责完成二者之间的通信或 者为各自提供独立的服务。
• 在实现基本功能的基础上,进一步完善程序,实 现诸如存档、滚动视图窗口等操作。
10.3.2 创建基本的程序框架
• 本节实现单文档界面程序框架的创建,并添加必 要的菜单和工具栏资源。
10.3.3 创建文档数据
• 最终用户在客户区绘制图形的数据是在文档类中 通过一个链表来记录的。首先定义一个全局的数 据结构CGraph,用以记录图形相关的数据。 (具 体内容请参照本书)
10.3.6 对例程数据进行序列化
• 在本节,实现对“Ch10Demo3”工程绘制的图形对 象能够进行存盘操作。(具体内容请参照本书)
10.3.7 让文档视结构程序支持滚动条
• 在前面实现的程序中,用户绘图区域还不能超过 可视窗口。本节将实现给客户区窗口添加滚动条。
• 要通过滚动条滚动显示文档,还必须知道文档滚 动的相应位置。所有这些,由MFC 的CScrollView类来完成。
10.3 文档/视图结构应用程序的开发
• 本节将开发一个典型的文档/视图结构的绘图程序 实例工程,通过实例,讲解有关视图对象和文档 对象的具体开发过程和方法。
10.3.1 实现目标
• 本实例要创建一个单文档绘图程序,通过菜单或 者工具栏按钮可以选择绘制直线、矩形和椭圆功 能,而后通过鼠标操作实现在客户窗口的绘图。 其绘图过程与Windows系统提供的绘图程序相似: 单击鼠标左键作为绘图起点,拖动鼠标实现实时 图形显示,是否鼠标左键后完成绘图操作。

文档视图结构

文档视图结构

文档/视图结构一、文档/视图的概念●在MFC中,文档类负责管理数据,提供保存和加载数据的功能。

视图类负责数据的显示,以及给用户提供对数据的编辑和修改功能。

●MFC给我们提供Document/View结构,将一个应用程序所需要的“数据处理与显示”的函数空壳都设计好了,这些函数都是虚函数,我们可以在派生类中重写这些函数。

有关文件读写的操作在CDocument的Serialize函数中进行,有关数据和图形显示的操作在CView的OnDraw函数中进行。

我们在其派生类中,只需要去关注Serialize和OnDraw 函数就可以了,其它的细节我们不需要去理会,程序就可以良好地运行。

●当我们按下“打开文件”菜单项时,Application Framework会激活打开文件对话框,让你指定文件名,然后自动调用CMiniCADDoc::Serialize读取文件。

Application Framework 还会调用CMiniCADView::OnDraw,传递一个显示DC,让你重新绘制窗口内容。

●MFC给我们提供Document/View结构,是希望我们将精力放在数据结构的设计和数据显示的操作上,而不要把时间和精力花费在对象与对象之间、模块与模块之间的通信上。

●一个文档对象可以和多个视图类对象相关联,而一个视图类对象只能和一个文档对象相关联。

●MFC对“文档”的设计思想是:一个类中的所有成员变量,都应该能够保存到一个文件中去,反之,也应该能从一个文件中读出来,加载到该类相应的成员变量中去。

MFC 对此的实现机制就是文档/视图的串行化(Serialize)。

二、串行化基础知识:使用CArchive类对存储在内存中的变量进行存取。

打开“006菜单工具栏状态栏”一章中的项目“2MiniCAD_图形保持”,添加菜单项“写文件”和“读文件”,对应代码如下:void CMiniCADDoc::OnFileWrite(){CFile file("C:\\1.dat", CFile::modeCreate | CFile::modeWrite);CArchive ar(&file, CArchive::store); //将CFile类和CArchive类关联起来,保存//ar.IsStoring();int i = 4;char ch = 'a';float f = 1.3f;CString str("ITJob");ar << i << ch << f << str;AfxMessageBox("成功写入数据到文件C:\\1.dat");}以二进制形式查看C:\1.dat文件的内容,如下void CMiniCADDoc::OnFileRead(){CFile file("C:\\1.dat", CFile::modeRead);CArchive ar(&file, CArchive::load); //将CFile类和CArchive类关联起来int i;char ch;float f;CString str;CString strResult;ar >> i >> ch >> f >> str;strResult.Format("从文件C:\\1.dat成功读取到数据:%d, %c, %f, %s", i, ch, f, str);AfxMessageBox(strResult);}上述代码说明,CArchive类具有对文件的读写功能,可以通过其流操作符<<将变量存入文件,通过>>将文件中的数据读取到变量中来。

Windows编程技术04-文档视图程序

Windows编程技术04-文档视图程序




stdafx.cpp
通常只包含 "stdafx.h"
生成预编译头文件,提高程序的编译速度。
11
单文档程序框架分析


0401.h
重载CWinApp类的InitInstance 成员函数,该函数可用于程序初始 化,在程序开始执行时被自动调用 消息响应成员函数OnAppAbout() 在类中包含“DECLARE_MESSAGE_MAP()”宏,使该类可以处理 消息 extern CMy0401App theApp,说明全局对象theApp为外部对象


TextView.cpp
本文件实现CMyTextView类 ASSERT_VALID、ASSERT宏调试工具 CView::OnInitialUpdate()成员函数初始化视图数据
16




12
ቤተ መጻሕፍቲ ባይዱ
单文档程序框架分析


MainFrm.h


本文件定义程序的主框架窗口类CMainFrame virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
同一时刻只需要处理一组数据 “记事本”程序一次只需处理一组数据,即一个文件。

文档视图

文档视图

文档/视图在MFC1.0中,应用程序有两个主要的组件:代表应用程序自身的应用程序对象和代表应用程序窗口的窗口对象。

应用程序对象的主要任务是创建窗口,反过来窗口再处理消息。

MFC几乎就是对WindowsAPI的封装。

在MFC2.0中,引入文档/视图体系结构,改变了MFC应用程序编制的方式。

在Doc/View中,应用程序的数据由文档对象代表,而数据的视图由视图对象代表。

文档和视图合作来处理用户的输入并绘制结果数据的文字和图形表示。

应用程序的主窗口,其操作功能在CFrameWnd和CMDIFrameWnd 类中实现,已经不再以消息处理为工作焦点了,而是作为视图,工具栏以及其他用户界面对象的容器。

利用MFC体系结构的好处是简化了开发过程,主结构提供了处理常规杂务的程序代码。

现在程序开发者对于使用MDI并不积极,这是由于SDI模型改善了以文档为中心的用户界面。

如果用户想同时编辑两个文档,Microsoft 更加愿意每个文档都在分开的应用程序实例中显示。

因此要以单文档为重点。

框架窗口是应用程序的顶层窗口,通常是WS_OVERLAPPEDWINDOW样式的窗口,带有可缩放边框,带有标题栏,系统菜单和最小,大化按钮和关闭按钮。

视图是子窗口,实际中作为框架窗口的客户区。

应用程序对象提供消息循环给框架窗口和视图提取消息。

视图对象将鼠标和键盘输入转换为处理保存在文档中的数据的命令,文档对象提供了视图所需要的用来输出的数据。

文档/视图应用程序从来不会为框架窗口获取客户区设备描述表并在其中绘制输出,相反它绘制输出到视图中。

看上去好像在框架窗口中绘制,实际上所有输出都输出到视图中。

如果愿意,可以给框架窗口绘制内容,但是您看不到任何结果,因为SDI框架窗口的客户区完全被视图遮盖了。

SDI文档模板CSingleDocTemplate是SDIDoc/View中最重要的部分。

RUNTIME_CLASS宏对于所指定的类返回指向了CRuntimeClass结构的指针,这就使得主结构可以在运行时创建这些类的对象了。

MFC文档视图结构详解

MFC文档视图结构详解

深入浅出MFC“文档/视图”架构(1)基本概念作者:宋宝华 e-mail:21cnbao@1.引言MFC引入了“文档/视图”结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。

“文档/视图”中主要涉及到四种类:(1)文档模板:class CDocTemplate; // template for document creationclass CSingleDocTemplate; // SDI supportclass CMultiDocTemplate; // MDI support(2)文档:class CDocument; // main document abstraction(3)视图:// views on a documentclass CView; // a view on a documentclass CScrollView; // a scrolling view(4)框架窗口:// frame windowsclass CFrameWnd; // standard SDI frameclass CMDIFrameWnd; // standard MDI frameclass CMDIChildWnd; // standard MDI childclass CMiniFrameWnd; // half-height caption frame wnd理解了这4个类各自的意义及它们纵横交错的关系也就理解了“文档/视图”结构的基本概念,在此基础上,我们还需要进一步研究“文档/视图”结构的MFC程序消息流动的方向,这样就完全彻底明白了基于“文档/视图”结构MFC程序的“生死因果”。

出于以上考虑,本文这样组织了各次连载的内容:第1次连载进行基本概念的介绍,第2~5次连载分别讲述文档模板、文档、视图和框架窗口四个类的功能和主要函数,连载6则综合阐述四个类之间的关系,接着以连载7讲解消息流动的方向,最后的连载8则以实例剖析连载1~7所讲述的所有内容。

文档视图结构窗口全屏显示

文档视图结构窗口全屏显示

文档视图结构窗口全屏显示1)在CMainFrame类中,增加如下三个成员变量。

private:WINDOWPLACEMENT m_OldWndPlacement; //用来保存原窗口位置BOOL m_bFullScreen; //全屏显示标志初始状态为FALSECRect m_FullScreenRect; //表示全屏显示时的窗口位置2)响应全屏显示菜单函数void CMainFrame::OnFullScreen(){GetWindowPlacement(&m_OldWndPlacement);CRect WindowRect;GetWindowRect(&WindowRect);CRect ClientRect;RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &C lientRect);ClientToScreen(&ClientRect);// 获取屏幕的分辨率int nFullWidth=GetSystemMetrics(SM_CXSCREEN);int nFullHeight=GetSystemMetrics(SM_CYSCREEN);// 将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的客户区位置间的差值, 就得到全屏显示的窗口位置m_FullScreenRect.left=WindowRect.left-ClientRect.left;m_FullScreenRect.top=WindowRect.top-ClientRect.top;m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFu llWidth;m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;m_bFullScreen=TRUE; // 设置全屏显示标志为 TRUE// 进入全屏显示状态WINDOWPLACEMENT wndpl;wndpl.length=sizeof(WINDOWPLACEMENT);wndpl.flags=0;wndpl.showCmd=SW_SHOWNORMAL;wndpl.rcNormalPosition=m_FullScreenRect;SetWindowPlacement(&wndpl);}3)重载CMainFrame类的OnGetMinMaxInfo函数,在全屏显示时提供全屏显示的位置信息。

C++ 文档与视图new

C++ 文档与视图new


利用MFC AppWizard[exe]向导可以很方便地建立 一个多文档应用程序,只需在MFC AppWizard向 导第1步选择Multiple documents程序类型。
SDI和MDI使用不同框架窗口。SDI的框架窗口 是唯一的主框架窗口,窗口类是CMainFrame, 由CFrameWnd派生而来。
一个文档对象可以有多个与之相关联的视图对象,当一 个文档的数据通过某个视图被修改后,与它关联的每一个视 图都必须反映出这些修改。必须通知到所有相关联的视图对 象,以便更新所显示的数据。 更新与该文档有关的所有视图的方法是调用成员函数 CDocument::UpdateAllViews()。
3.视图类的成员函数OnUpdate()
例 为程序DrawCoin添加弹出式菜单。
利 用 ClassWizard 为 视 图 类 添 加 WM_CONTEXTMENU 的消息处理函数,添加如下代码: void CDrawCoinView::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menuPopup; // 声明菜单对象 if (menuPopup.CreatePopupMenu()) // 创建弹出式菜单 { // 向菜单menuPopup中添加菜单项 menuPopup.AppendMenu(MF_STRING, ID_COIN_ADD, "增加硬币\tCtrl+A"); menuPopup.AppendMenu(MF_STRING, ID_COIN_SUB, "减少硬币\tCtrl+B"); // 显示弹出式菜单,并跟踪用户的菜单项的选择 menuPopup.TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this); } }

MFC编程之文档、视图结构应用程序

MFC编程之文档、视图结构应用程序

第2章文档/视图结构应用程序2.0 知识要点1. 文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互。

2. SDI具有文档/视图结构的应用程序框架,该框架包括应用程序类、窗口框架类、文档类和视图类,编程的任务是在文档类和视图类中添加适当的代码。

其中文档类中一个重要的成员函数是OnNewDocument(),用户在此添加代码完成对数据的初始化;而视图类中最重要的成员函数是OnDraw(),通过在该函数中添加代码实现窗口内容的输出。

3. 通过介绍几种SDI结构的典型应用程序来了解其结构及设计方法,典型应用包括:•利用画笔、画刷等工具及位图处理的方法实现文字和图形的输出。

•利用定时器控件制作动画程序。

•对鼠标和键盘进行编程的基本方法。

•文件、字体、颜色等几种通用对话框的使用方法及自定义对话框的设计、调用方法。

•菜单的设计方法。

2.1 文档/视图结构SDI 应用程序由 AppWizard 创建好后,即使没有编写一行代码,仍然可以运行,并且具有一个标准 Windows应用程序所需要的组成成份,程序员的工作就是往这个框架添加必要的代码。

以下通过一个简单实例说明文档/视图结构应用程序的创建过程。

【例2-1】创建一个如图所示的应用程序,在窗口中显示一个矩形框,框中显示“同舟共济自强不息”。

假定本例的工程名为TEST,程序创建过程如下:(1)利用 AppWizard 创建一个 SDI 应用程序框架。

(2)文档类是存放数据的主要地方,本例在其中说明一个存放矩形框数据的 CRect 类对象 r 和一个存放字符串的 CString 对象s,方法为:在工作区的“ ClassView ”中,双击 CTESTDoc 类,在该类代码中添加如下代码:public:CRect r;CString s;说明:CRect 是 MFC 定义的一个类,有 4 个数据成员: left 、 top 、 right 和bottom 。

Vc++文档和视图

Vc++文档和视图
5
二、文档/视图结构
对数据进行管理和维 护,数据保存在文档 类的成员变量中
文档类通过串行化 的过程将数据保存 到磁盘文件或数据库中 文档类还可处理来自如 菜单、工具栏按钮和加 速键的WM_COMMAND消息
在文档/视图结构中
在文档和用户之 间起中介作用
除WM_COMMAND外,文档不 能处理其它的Windows消息
16.3.6 文档与视图结构的交互
常用成员函数
1.CView::GetDocument 一个视图对象有且只有一个与文档相关联的对象。 GetDocument函数使得应用程序从一个视图得到它所对应的文档 ;GetDocument提供了用来访问文档类的成员函数的指针。 2. CDocument::UpdateAllViews 当文档数据发生改变时,通知所有的视图更新所显示的数据。 3. CView::OnUpdate 由应用程序框架调用来作为对应用程序调用UpdateAllView函数 的响应。 4. Cview::OnInitialUpdate 用户选择File菜单的New或者Open时,调用该函数完成视图类的 初始化工作。 15
文档和视图是相互交互的;视图通过 GetDocument函数获得指向关联文档的指针 ,从文档读取数据后进行显示,并将与用户交 互后的结果送回文档处理。 框架由文档模板类创建,能够为视图类和应用 程序提供显示的窗口。 文档、视图和框架三者相互关联、相互协调, 彼此都包含了指向对方的指针。
4
视图把数据显示 于计算机屏幕上
视图通过相关联的文档类 的成员函数将经过修改的 数据传递给文档对象 文档对象获得修改过的数据之后,对 其进行必要的修改,最后保存到永久 介质(如磁盘文件)中
用户通过与视图的 交互来查看数据并 对数据进行修改
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京源智天下科技有限公司
1-6
联系方式:
通常情况下,视图通过 通常情况下,视图通过GetDocument成员函数获得指向相 成员函数获得指向相 关联文档对象的指针, 关联文档对象的指针,并通过该指针调用文档类的成员 函数从文档中读取数据,并将数据显示在电脑屏幕上, 函数从文档中读取数据,并将数据显示在电脑屏幕上, 用户通过与视图的交互来查看数据并对其进行修改, 用户通过与视图的交互来查看数据并对其进行修改,如 所示. 图10-4所示. 所示
北京源智天下科技有限公司
1-2
联系方式:
文档视图结构概述
文档视图结构是Visual C++ 6.0语言中使用 语言中使用MFC开发应 文档视图结构是 语言中使用 开发应 用程序的基本框架.在这个框架中, 用程序的基本框架.在这个框架中,数据的维护及显示 是由两个不同但又彼此紧密相关的类——文档类和视图 是由两个不同但又彼此紧密相关的类 文档类和视图 类分别负责的. 类分别负责的. 文档和视图是MFC应用程序的核心.Windows应用程 文档和视图是 应用程序的核心. 应用程 应用程序的核心 序除了处理数据外,还要将数据显示出来. 序除了处理数据外,还要将数据显示出来.在 Windows界面下,数据的显示并非使用 界面下, 标准C++ 界面下 数据的显示并非使用ANSI标准 标准 中的cin或 指令. 采用了两个相互独立的类: 中的 或cout指令.MFC采用了两个相互独立的类: 指令 采用了两个相互独立的类 CDocument类和 类和CView类来负责数据的存储与显示. 类来负责数据的存储与显示. 类和 类来负责数据的存储与显示
北京源智天下科技有限公司
1-8
联系方式:
GetDocument函数 函数
该函数是视图类中的一个成员函数, 该函数是视图类中的一个成员函数,可写为 CView::GetDocument.GetDocument函数返回的是指 . 函数返回的是指 向文档的指针, 向文档的指针,利用这个指针就可以访问文档类或其派 生类的成员函数及公共数据成员. 生类的成员函数及公共数据成员. 当AppWizard生成一个派生的 生成一个派生的CView类的时候,它同时也 类的时候, 生成一个派生的 类的时候 创建了一个特殊的typesafe(保护类型)的 创建了一个特殊的 (保护类型) GetDocument函数,读者可在工作区打开【ClassView 函数, 函数 读者可在工作区打开【 标签,单击打开视图类CView,可看到该函数,如图 】标签,单击打开视图类 ,可看到该函数, 10-7所示. 所示. 所示
北京源智天下科技有限公司
1-9
联系方式:
北京源智天下科技有限公司
1-10
联系方式:
视图与文档的交互流程如下: 视图与文档的交互流程如下: 当用户在视图中对文档数据进行编辑时, 当用户在视图中对文档数据进行编辑时,视图会调用其 自己的成员函数GetDocument来通知文档对象更新其 自己的成员函数 来通知文档对象更新其 内部数据; 内部数据; 当文档对象修改数据之后, 当文档对象修改数据之后,它会调用文档类的 UpdateAllViews成员函数,通知所有与之联系的视图 成员函数, 成员函数 进行强制更新显示,如图10-8所示. 所示. 进行强制更新显示,如图 所示
GetDocument函数
文档类 视图类
UpdateAllViews函数
北京源智天下科技有限公司
1-11
联系方式:
单文档视图应用程序( 单文档视图应用程序(SDI) )
一个单文档界面应用程序只有一个窗口. 一个单文档界面应用程序只有一个窗口.如果应用程序 依赖于磁盘文件的文档,那么一次只能加载一个文档, 依赖于磁盘文件的文档,那么一次只能加载一个文档, 类似于Windows的记事本程序. 类似于 的记事本程序. 的记事本程序 当读者创建的是单文档界面应用程序时, 当读者创建的是单文档界面应用程序时,AppWizard 会自动地创建4个类 个类. 会自动地创建 个类.这4个类的类名构成与工程名有 个类的类名构成与工程名有 当工程名长度在一定范围内,则类名构成为" 关.当工程名长度在一定范围内,则类名构成为"C"+ 工程名+类的类型,如名称为Test的工程的四个类为: 工程名 类的类型,如名称为 的工程的四个类为: 类的类型 的工程的四个类为 CTestApp,CMainFrame,CTestView,CTestDoc , , , 它们分别为CWinApp类,CFrameView类, ,它们分别为 类 类 CDocument类和 类和CView类的派生类. 类的派生类. 类和 类的派生类 当工程名长度超过该长度时,或工程名为中文时,类名 当工程名长度超过该长度时,或工程名为中文时, 构成为" 构成为"CMy"+类的类型 +
文档类
变量和成员函数
视图类
查看修改
用户
北京源智天下科技有限公司
1-7
联系方式:
文档-视图相互作用的函数 文档 视图相互作用的函数
文档-视图( 文档 视图(Document-View)体系结构是 视图 )体系结构是MFC的一大 的一大 特色,它将数据的管理和显示隔离; 特色,它将数据的管理和显示隔离;文档对象是用来容 纳数据的, 纳数据的,而视图对象则是用来显示数据并且对数据进 行编辑. 行编辑. 在文档,视图和应用程序框架之间包含了一系列非常复 在文档, 杂的相互作用过程.为了了解这一过程, 杂的相互作用过程.为了了解这一过程,首先要熟悉有 关文档类和视图类中的几个重要的成员函数. 关文档类和视图类中的几个重要的成员函数.
北京源智天下科技有限公司
1-15
联系方式:
需要读者注意的是,多文档应用程序 需要读者注意的是,多文档应用程序MDI的框架窗口类也是 的框架窗口类也是 CMainFrame类,但它是由 类派生的, 类 但它是由CMDIFrameWnd类派生的, 类派生的 不是SDI程序中的 程序中的CFrameWnd类,其相应的文件也是 不是 程序中的 类 "MainFrame.h"和"MainFrame.cpp".而增加的文档 和 . 框架窗口类则是由CMDIChildWnd类派生的,其相应的 类派生的, 框架窗口类则是由 类派生的 文件为"ChildFrm.h"和 ChildFrm.cpp". 文件为"ChildFrm.h"和"ChildFrm.cpp".其工作区如 所示. 图10-17所示. 所示
第十讲: 第十讲:文档视图结构
杨章伟 e-mail:yang505412@
北京源智天下科技有限公司
联系方式:
课程内容安排
文档视图结构概述 文档-视图相互作用的函数 文档 视图相互作用的函数 单文档-视图应用程序结构 单文档 视图应用程序结构 多文档-视图应用程序结构 多文档 视图应用程序结构 综合练习 思考和习题
北京源智天下科技有限公司
1-12
联系方式:
例如,名称为"单文档视图应用程序"的工程, 例如,名称为"单文档视图应用程序"的工程, AppWizard创建的四个类为:CMyApp,CMainFrame 创建的四个类为: 创建的四个类为 , ,CMytView,CMyDoc,它们分别表示 , ,它们分别表示CWinApp类, 类 CFrameView类,CDocument类和 类和CView类的派生类, 类的派生类, 类 类和 类的派生类 如图10-9所示. 所示. 如图 所示
北京源智天下科技有限公司
1-3
联系方式:
文档和视图的关系
在文档视图结构中, 在文档视图结构中,文档是应用程序数据基本元素的集 它构成应用程序所使用的数据单元. 合,它构成应用程序所使用的数据单元.另外它还对数 据进行管理和维护, 据进行管理和维护,通常数据被保存在文档类的成员变 量中. 量中.视图给用户提供了与文档中的数据进行交互的界 它把用户输入的信息转化为对文档中数据的操作, 面,它把用户输入的信息转化为对文档中数据的操作, 将文档类的数据取出来,在屏幕上进行显示. 将文档类的数据取出来,在屏幕上进行显示.
北京源智天下科技有限公司
1-13
联系方式:
创建单文档视图应用程序
在AppWizard下,新建一个【MFC AppWizard[exe]】程 下 新建一个【 】 打开【 序,打开【MFC AppWizard-Step 1】对话框,在其中 - 】对话框, 选中【 选中【Single document】单选按钮和【 】单选按钮和【 Document/View arthitechure support?】复选框,如 】复选框, 不选中该复选框, 不选中该复选框,MFC AppWizard不会自动为文档视图 不会自动为文档视图 结构生成代码,如图10-11所示. 所示. 结构生成代码,如图 所示
北京源智天下科视图应用程序( 多文档视图应用程序(MDI) )
一个多文档界面应用程序拥有多个子窗口. 一个多文档界面应用程序拥有多个子窗口.每个窗口单独对 应于一个文档,类似于Microsoft Word程序. 程序. 应于一个文档,类似于 程序 与单文档应用程序不同的是, 与单文档应用程序不同的是,当读者创建的是多文档界面应 用程序时, 的会自动创建五个类, 用程序时 , AppWizard的会自动创建五个类 , 其类的命 的会自动创建五个类 名规则与单文档应用程序的规则相同. 例如, 名规则与单文档应用程序的规则相同 . 例如 , 创建工程 Test 后 , MFC AppWizard 生 成 的 五 个 类 分 别 为 : CTestApp, CMainFrame, CChildFrame, CTestDoc , , , , CTestView, 分别为CWinApp类 , CMDIFrameWnd , 分别为 类 类和CView类的派 类,CMDIChildWnd类,CDocument类和 类 类和 类的派 生类. 生类.
相关文档
最新文档