第7章 (new)文档和视图
合集下载
Word基础与应用第7章课件

7.1.3 编辑模板
要对模板进行编辑修改,可在Word程序中打开 “打开”对话框,选择模板保存的位置,如在左侧的列 表中选择“受信任模板”,打开“Templates”文件夹, 再选择要修改的模板,如“我的教材模板”,然后单击
“打开”按钮将其打开,其编辑修改方法与编辑普通文 档相同。
7.2 上机实践——制作菜谱模板
钮,在展开的列表中选择“查看宏”项,在打开的 “宏”对话框中选择要删除的宏,然后单击“删除” 按钮,打开提示对话框,单击“是”按钮,即可将 所选宏删除。
7.4 上机实践——录制“格式宏”
下面我们来录制一个文字格式为:汉仪太极简 体,二号,绿色,突出显示颜色为黄色,居中对齐 的“格式宏”,并将其指定到键盘,然后运行该宏, 以此来熟悉一下宏的录制与运行操作,具体操作步 骤见视频7-3。
下面我们 通过制作一个菜 谱模板,熟悉一 下模板的创建过 程,具体操作步 骤见视频7-1。
7.3 使用宏
宏是将一系列Word命令和指令组合在一起, 形成一个单独的命令,以实现任务执行的自动化。 简单地说,就是批处理,使用一个简单的操作, 比如一次鼠标的单击,就可以完成多项任务,十 分方便。
如果要在Word中重复执行某项任务,可以将 其中的操作创建为宏,为其指定快捷方式,然后 运行该宏即可。Word提供两种方法来创建宏:利 用宏录制器和Visual Basic编辑器。
7.1.1 创建自己的模板
下面我们制作一个书稿文档的模板,该模板 中包括了对纸张大小,页边距,首页、奇偶页页眉 和页脚等内容的设置:新建一文档,然后在“页面 设置”对话框中分别设置纸张大小 、页边距和页 眉页脚的版式,为文档添加页眉和页脚及页码,最 后将其另存为Word模板,名称为“我的教材模 板”。
工程制图第7章 零件图

一组视图 完整尺寸
技术要求 标题栏
二、零件图的内容
1.视图 根据有关标准和规定,用正投影法表达零件内、外结 构的一组图形。
2.尺寸 零件图应正确、完整、清晰、合理地标注零件制造、 检验时所需的全部尺寸。
3.技术要求 标注或说明零件制造、检验或装配过程中应达到 的各项要求,如表面粗糙度、极限与配合、形状和位置公差、 热处理、表面处理等要求。
1.主视图的表达
1)形状特征的表达
能够清楚地表达主要形体的形状特征
2)加工位置的表达
反应了零件的加工位置
例如:(轴、盘类)
3)工作位置原则
反应了零件的工作位置
例如: (支架、壳体类)
2.其他视图的表达
首先读表达主要形体的其它视图,再读次要形体的视图。
二、典型零件图的视图的表达方法 1.轴、套类零件表达 ⑴ 分析形体、结构
4.标题栏 标题栏画在图框的右下角,需填写零件的名称、材 料、数量、比例,制图、审核人员的姓名、日期等内容。
§7-2 零件图的视图
一、视图表达的一般原则 1.主视图表达 2.其他视图的表达
二、典型零件图的视图的表达方法
轮盘类
支架
轴
传动装置
一、视图表达的一般原则
能正确、完整、清晰、合理地表达出零件的全部结构形状、读图 方便、画图简单。在画图前从零件的结构特点、使用功能和加工 方法等进行分析,选用了适当的视图和各种方法进行表达
基本符号上加一小圆,表示表面粗糙度是用不去除材料的 方法获得,如:铸,锻,冲压、热轧、冷轧、粉末冶金等; 或是用保持原供应状况的表面。
用任何方法获得的表面粗糙度,Ra 的上限值 3.2μ m。
用去除材料方法获得的表面粗糙度,Ra 的上 限值3.2μ m。
第七章 Word文字处理

第七章 Word文字处理
② 双击左键:可选中一个单词或一个单位文本。 ③ 三击左键:可选中整个段落。 ④ 将鼠标移到文档编辑区左侧,指针呈“”形时,单击可选中整行,双击可 选中整个段落,三击可选中整篇文档。 (2) 使用键盘选择文本。 ① Ctrl + A:选中整篇文档。 ② Shift +←或Shift +→:从当前光标位置开始,扩展选中前一字或后一字。 ③ Shift +↑或Shift +↓:扩展选中到上一行或下一行与光标对齐的位置。 ④ Shift + Home或Shift + End:从当前光标位置开始,扩展选中到行首或行 尾。 ⑤ Ctrl + Shift + Home或Ctrl + Shift + End:从当前光标位置开始,扩展
第七章 Word文字处理
(3) 创建样式。单击“样式”任务窗格下方的“新建样式”按钮,可新建样式。 如要新样式成为当前文档模板的一部分,则选择“添加到模板”复选框,否则 新样式只能在当前文档中使用,而不能在其它用当前文档模板创建的文档中使用。 如选择“自动更新”复选项,则一旦修改样式,文档中应用该样式的文本可同 时改变。 (4) 修改样式。在“样式”任务窗格中,选择已经存在的样式的下拉菜单项 “修改”,可修改该样式以满足需要。 (5) 复制样式。Word允许将某个文档中的样式复制到其它文档中。方法是:选 择Office按钮→Word选项→“加载项”,设置管理内容为“模板”,单击“转到” 后打开“模板和加载项”对话框,单击“管理器”按钮,在“管理器”对话框的 “样式”标签中设置。
第七章 Word文字处理
8.设置首字下沉效果 首字下沉是将段落中开始几个文字放大下沉几行,产生引人注目的效果。方法 是:“插入”→“文本”→“首字下沉”。 9.简体字与繁体字的转换 有时候需要实现简体字与繁体字的相互转换,这类操作可通过“审阅”→“中 文简繁转换”区各项命令来完成。 7.2.5 修饰段落 修饰段落是完成对段落整体布局的格式化,所以又称为段落格式化。 1.设置段落 设置段落是对段落的整个外观进行格式化。可通过“开始”→“段落”区扩展 钮打开“段落”对话框,设置段落的对齐方式、缩进、行间距和段落间距、换行
《Visual C++程序设计及实践》课件第7章 MFC文档视图

程序全局快捷键:在程序运行的时候,不打开菜单,而是直接使用快捷键 执行相应的菜单项
- 23 -
菜单编程—为菜单项设置快捷键
为菜单项添加快捷提示 快捷键资源编辑器
创建快捷键资源
- 24 -
菜单编程—弹出菜单
➢ 创建弹出菜单资源 :
- 25 -
菜单编程—弹出菜单
➢ 弹出菜单的加载
void CMyNotepadView::OnRButtonUp(UINT nFlags, CPoint point) {
IDR_MAINFRAME, RUNTIME_CLASS(CMytestDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CMytestView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate);
在视图与文档关联之后但在显示之前,或者用户选择了菜单“File”“New” *OnInitialUpdate() 或者“File”“Open”时,框架都将会调用此虚函数,重定义这个函数对重
新读入或新创建文档的视图进行初始化
*OnUpdate()
当文档内容发生变化,视图需要更新时,调用该函数来实现窗口的重绘, 它将引发OnDraw()函数被调用
-3-
文档/视图框架—文档/视图结构相互作用
框架窗口 文档
文档当前可视部分
文档和视图的关系
-4-
文档/视图框架—Document Template的作用
➢.....C. winApp负责完成选择DocTemplate的重任,DocTemplate负责把
//注册应用程序的文档模板。
- 23 -
菜单编程—为菜单项设置快捷键
为菜单项添加快捷提示 快捷键资源编辑器
创建快捷键资源
- 24 -
菜单编程—弹出菜单
➢ 创建弹出菜单资源 :
- 25 -
菜单编程—弹出菜单
➢ 弹出菜单的加载
void CMyNotepadView::OnRButtonUp(UINT nFlags, CPoint point) {
IDR_MAINFRAME, RUNTIME_CLASS(CMytestDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CMytestView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate);
在视图与文档关联之后但在显示之前,或者用户选择了菜单“File”“New” *OnInitialUpdate() 或者“File”“Open”时,框架都将会调用此虚函数,重定义这个函数对重
新读入或新创建文档的视图进行初始化
*OnUpdate()
当文档内容发生变化,视图需要更新时,调用该函数来实现窗口的重绘, 它将引发OnDraw()函数被调用
-3-
文档/视图框架—文档/视图结构相互作用
框架窗口 文档
文档当前可视部分
文档和视图的关系
-4-
文档/视图框架—Document Template的作用
➢.....C. winApp负责完成选择DocTemplate的重任,DocTemplate负责把
//注册应用程序的文档模板。
5 文档与视图

Visual C++.NET 程序设计
第七章 文档与视图
建议学时: 建议学时:8 学习重点: 学习重点:理解文档视图机制 掌握文档类、试图类、框架类和应用程序类 掌握文档类、试图类、 掌握文档串行化方法 了解窗口分割
本章内容
1 2 3 文档视图结构 文档串行化和文件操作 分割窗口
1
7.1 文档视图结构
7.1.1 概述 文档视图结构里, 文档视图结构里,文档是一个应用程序数据基本元素的 集合,它构成应用程序所使用的数据单元; 集合,它构成应用程序所使用的数据单元;另外它还提 供了管理和维护数据的手段。 供了管理和维护数据的手段。 视图给用户提供了一个与文档中的数据交互的界面, 视图给用户提供了一个与文档中的数据交互的界面,它 把用户的输入转化为对文档中数据的操作。 把用户的输入转化为对文档中数据的操作。每个文档都 会有一个或多个视图显示, 会有一个或多个视图显示,一个文档可以有多个不同的 视图。 视图。
3
7.1 文档视图结构
7.1.2 文档模板 文档模板负责创建文档、视图和框架窗口。 文档模板负责创建文档、视图和框架窗口。 MFC提供了一个文档模板类 提供了一个文档模板类CDocTemplate支持文档 提供了一个文档模板类 支持文档 模板。文档模板类是一个抽象的基类, 模板。文档模板类是一个抽象的基类,它定义了文档模 板的基本处理函数接口。由于它是一个抽象基类, 板的基本处理函数接口。由于它是一个抽象基类,因此 不能直接用它来定义对象而必需用它的派生类。 不能直接用它来定义对象而必需用它的派生类。对一个 单文档界面程序,使用CSingleDocTemplate(单文档 单文档界面程序,使用 单文档 模板类),而对于一个多文档界面程序, 模板类 ,而对于一个多文档界面程序,使用 CMultipleDocTemplate。 。
第七章 文档与视图
建议学时: 建议学时:8 学习重点: 学习重点:理解文档视图机制 掌握文档类、试图类、框架类和应用程序类 掌握文档类、试图类、 掌握文档串行化方法 了解窗口分割
本章内容
1 2 3 文档视图结构 文档串行化和文件操作 分割窗口
1
7.1 文档视图结构
7.1.1 概述 文档视图结构里, 文档视图结构里,文档是一个应用程序数据基本元素的 集合,它构成应用程序所使用的数据单元; 集合,它构成应用程序所使用的数据单元;另外它还提 供了管理和维护数据的手段。 供了管理和维护数据的手段。 视图给用户提供了一个与文档中的数据交互的界面, 视图给用户提供了一个与文档中的数据交互的界面,它 把用户的输入转化为对文档中数据的操作。 把用户的输入转化为对文档中数据的操作。每个文档都 会有一个或多个视图显示, 会有一个或多个视图显示,一个文档可以有多个不同的 视图。 视图。
3
7.1 文档视图结构
7.1.2 文档模板 文档模板负责创建文档、视图和框架窗口。 文档模板负责创建文档、视图和框架窗口。 MFC提供了一个文档模板类 提供了一个文档模板类CDocTemplate支持文档 提供了一个文档模板类 支持文档 模板。文档模板类是一个抽象的基类, 模板。文档模板类是一个抽象的基类,它定义了文档模 板的基本处理函数接口。由于它是一个抽象基类, 板的基本处理函数接口。由于它是一个抽象基类,因此 不能直接用它来定义对象而必需用它的派生类。 不能直接用它来定义对象而必需用它的派生类。对一个 单文档界面程序,使用CSingleDocTemplate(单文档 单文档界面程序,使用 单文档 模板类),而对于一个多文档界面程序, 模板类 ,而对于一个多文档界面程序,使用 CMultipleDocTemplate。 。
第7章文档与视图

VC++应用编程
7.2.3 简单的文档/视图结构应用程序
【例7.1】编写一个单文档的应用程序,程序运行后, 当用户在客户区窗口按下鼠标左键时,以鼠标所在位 置为圆心绘圆。
void CLi7_1View::OnLButtonDown(UINT nFlags, CPoint point) { CClientDC dc(this); dc.Ellipse(point.x-4,point.y-4,point.x+4,point.y+4);
为了统一和简化数据处理方法,Microsoft公司 在MFC中提出了文档/视图结构的概念。
VC++应用编程
7.1.1 概述 文档/视图结构的基本概念及创建过程。 1.文档(Document) 在文档/视图结构中,文档是用来管理和组织数 据的。C++应用编程
CView类关系
CObject CCmdTarget CWnd CView
• 可接收windows消息 WM_PAINT • 可接收命令消息 WM_COMMAND
VC++应用编程
滑动窗口
VC++应用编程
3. 框架 (Frame) 窗口 Frame 窗 口 负 责 文 档 与 视 图 的 界 面 管 理 , 当 Frame窗口关闭时,在其中的视图也被自动删除。 下图说明了文档、视图、框架窗口之间的关系。
文档创建过程
VC++应用编程
7.1.2 文档与视图之间的相互作用 文档与视图的交互是通过类的公有成员变量和 成员函数实现的。
1.视图类CView的成员函数GetDocument() 一个视图对象只有一个与之相关联的文档对象。 在 MFC 应 用 程 序 中 , 视 图 对 象 通 过 调 用 成 员 函 数 GetDocument()得到与之相关联的文档对象的指针, 利用这个指针就可以访问文档类及其派生类的公有 数据成员和成员函数。
第7章 C++ (new)文档和视图—武汉科技大学研究生

7.1 字符串类CString
7.2 文档模板
用MFC AppWizard创建的单文档(SDI)或多文档(MDI)应用 程序均包含应用程序类、文档类、视图类和框架窗口类,这些 类是通过文档模板来有机地联系在一起。
7.2.1 文档模板类
文档应用程序框架结构是在程序运行一开始构造的,在单文 档应用程序(设项目名为Ex_SDI)的应用程序类InitInstance函数 中,可以看到这样的代码:
CXXDocument
CXXView
7.7.3 切分窗口
1. 静态切分和动态切分
静态切分:第一次被创建时,窗格就已经被切分好了,次序和 数目不能再被改变,但可以移动切分条来调整窗格的大小。每 个窗格是不同的视图类。 动态切分:它允许用户在任何时候对窗口进行切分,用户既可 以通过选择菜单项来对窗口进行切分,也可以通过拖动滚动条 中的切分块对窗口进行切分。动态切分窗口中的窗格通常使用 的是同一个视图类。
7.7.2 应用程序对象指针的互调
2. 从视图类中获取文档对象和主框架对象指针 在视图类中获取文档对象指针是很容易的,只需调用 GetDocument 即可。而函数 CWnd::GetParentFrame 可实现 从视图类中获取主框架指针:
CFrameWnd* GetParentFrame( ) const;
CScrollView类不仅能直接支持视图的滚动操作,而且还能管 理视口的大小和映射模式,并能响应滚动条消息、键盘消息以及鼠 标滚轮消息。
7.4.2 列表控件和列表视图
列表控件是一种极为有用的控件之一,它可以用 “大图 标”、“小图标”、“列表视图”或“报表视图”等四种不 同的方式来显示一组信息,如图所示。
7.7.1 文档与视图的相互作用
02第7章建立主控文档

”命令,将文件 命名为“Word实用教程.doc”。 4.选定要划分到子文档中的标题和文本。选定内容 的第一个标题必须是每个子文档开头要使用的标 题级别。例如,选中图中第一章中所有的大纲。
5.单击“大纲”选项卡“主控文档”功能区的“显 示文档”按钮 ,单击此时出现的“创建”按钮 ,如
图所示,可以看到,Word把子文档放在一个虚线框 中,并且在虚线框的左上角显示子文档图标。
6.单击“大纲”选项卡“主控文档”功能区中的“
显示文档”按钮,单击此时出现的“折叠子文档” 按钮 ,此时子文档被保存,并在主控文档中显 示子文档的名称和位置,如图所示。
将已有文档转换为主控文档:
1.打开要转换为主控文档的文档。 2.切换到大纲视图下,单击“主控文档”功能区的 “显示文档”按钮。 3.单击“大纲工具”功能区 “显示级别”的下拉按 钮,选择要显示为子文档的标题。如果文档中的标 题没有使用标准样式,应改为标准标题样式。 4.单击“主控文档”功能区的“创建”按钮
建立主控文档
主控文档
主控文档是一个独立的文件,也可称为子文 档的“容器”。可以使用主控文档将长文档分成 较小的、更易于管理的子文档,从而便于组织和 维护。
创建新的主控文档
1.创建一个新的空白文档。 2.在“视图”选项卡,“文档视图”功能区中单击 “大纲视图”按钮切换到大纲视图下,输入如图 所示的文档大纲。
5.单击“大纲”选项卡“主控文档”功能区的“显 示文档”按钮 ,单击此时出现的“创建”按钮 ,如
图所示,可以看到,Word把子文档放在一个虚线框 中,并且在虚线框的左上角显示子文档图标。
6.单击“大纲”选项卡“主控文档”功能区中的“
显示文档”按钮,单击此时出现的“折叠子文档” 按钮 ,此时子文档被保存,并在主控文档中显 示子文档的名称和位置,如图所示。
将已有文档转换为主控文档:
1.打开要转换为主控文档的文档。 2.切换到大纲视图下,单击“主控文档”功能区的 “显示文档”按钮。 3.单击“大纲工具”功能区 “显示级别”的下拉按 钮,选择要显示为子文档的标题。如果文档中的标 题没有使用标准样式,应改为标准标题样式。 4.单击“主控文档”功能区的“创建”按钮
建立主控文档
主控文档
主控文档是一个独立的文件,也可称为子文 档的“容器”。可以使用主控文档将长文档分成 较小的、更易于管理的子文档,从而便于组织和 维护。
创建新的主控文档
1.创建一个新的空白文档。 2.在“视图”选项卡,“文档视图”功能区中单击 “大纲视图”按钮切换到大纲视图下,输入如图 所示的文档大纲。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.7.3 切分窗口
7.7.1 文档与视图的相互作用
1. CView::GetDocument函数
当MFC AppWizard产生应用程序CView类时,它同时也 创建一个安全类型的GetDocument函数,它返回的是指向用户 派生文档类的指针。该函数是一个内联(inline)函数,如下面的 代码:
CEx_SDIDoc* CEx_SDIView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf (RUNTIME_CLASS(CEx_SDIDoc))); // “断言”m_pDocument指针所指向的CEx_SDIDoc类是一个 RUNTIME_CLASS类型 return (CEx_SDIDoc*)m_pDocument; }
CXXDocument
CXXView
7.7.3 切分窗口
1. 静态切分和动态切分
静态切分:第一次被创建时,窗格就已经被切分好了,次序和 数目不能再被改变,但可以移动切分条来调整窗格的大小。每 个窗格是不同的视图类。 动态切分:它允许用户在任何时候对窗口进行切分,用户既可 以通过选择菜单项来对窗口进行切分,也可以通过拖动滚动条 中的切分块对窗口进行切分。动态切分窗口中的窗格通常使用 的是同一个视图类。
7.2.1 文档模板类
文档应用程序框架结构是在程序运行一开始构造的,在单文 档应用程序(设项目名为Ex_SDI)的应用程序类InitInstance函数 中,可以看到这样的代码:
BOOL CEx_SDIApp::InitInstance() { … CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, // 资源ID RUNTIME_CLASS(CEx_SDIDoc), // 文档类 RUNTIME_CLASS(CMainFrame), // 主框架窗口类 RUNTIME_CLASS(CEx_SDIView)); // 视图类 AddDocTemplate(pDocTemplate); … return TRUE; }
7.7.1 文档与视图的相互作用
5. CDocument::OnNewDocument函数
在文档应用程序中,当用户从“文件”菜单中选择“新建”命 令时,框架将首先构造一个文档对象,然后调用该虚函数。这里是 设置文档数据成员初始值的好地方,当然用户还可在文档构造函数 中添加初始化代码。 MFC AppWizard为用户的派生文档类自动产生重载的 OnNewDocument。
7.4.1 一般视图类的使用
7.4.1 一般视图类的使用
1. CEditView类
CEditView 类对象是一种视图,像 CEdit 类一样,它也提 供窗口编辑控制功能,可以用来执行简单文本操作,如打印、 查找、替换、剪贴板的剪切、复制和粘贴等。由于CEditView
类自动封装上述功能的映射函数,因此只要在文档模板中使用
CEditView类,那么应用程序的“编辑”菜单和“文件”菜单 里的菜单项都可自动激活。
7.4.1 一般视图类的使用
[例Ex_Edit] 创建一个基于CEditView类的单文档应用程序。
(1) 选择“文件”→“新建”菜单→“工程”标签,选择MFC AppWizard(exe)的项目类型,输入项目名Ex_Edit,单击[确定]按钮。 (2) 在向导的第1步中,将应用程序类型选为“单个文档”(SDI)。 (3) 保留默认选项,单击[下一步]按钮,直到出现向导的第6步,将 CEx_EditView的基类选为CEditView,如图所示。 (4) 单击[完成]按钮,编译运行,打开一个文档,结果如图 6.15所示。
7.4.1 一般视图类的使用
2. CRichEditView类
CRichEditView类使用了复合文本编辑控件,因此它支持混合字 体 格 式 和 更 大 数 据 量 的 文 本 。 CRichEditVieห้องสมุดไป่ตู้ 类 被 设 计 成 与 CRichEditDoc 和 CRichEditCntrItem 类 一 起 使 用 , 可 实 现 完 整 的 ActiveX包容器应用程序。
3. CFormView类
CFormView 类是一个非常有用的视图类,它具有许多无模式对 话框的特点。像CDialog的派生类一样,FormView的派生类也和相 应的对话框资源相联系,它也支持对话框数据交换和对话框数据确 认 (DDX 和 DDV) 。 CFormView 是所有表单视图 ( 如 CRecordView 、 CDaoRecordView、CHtmlView等)的基类;一个基于表单的应用程 序能让用户在程序中创建和使用一个或多个表单。
7.7.1 文档与视图的相互作用
2. CDocument::UpdateAllViews函数
如果文档中的数据发生了改变,那么所有的视图都必须 被通知到,以便它们能够对所显示的数据进行相应的更新。
void UpdateAllViews( CView* pSender, LPARAM lHint = 0L, CObject* pHint = NULL ) pSender:视图指针。若在应用程序文档类的成员函数中调用该函 数,则为NULL;被应用程序视图类中的成员函数调用,则此参数 应为this。lHint:更新视图时发送信息的提示标识值; pHint:存贮信息的对象指针。 当UpdateAllViews被调用时:如果参数pSender指向某个特 定的视图对象,那么除了该指定的视图之外,文档的所有其他视图 的OnUpdate函数都会被调用。
7.4.3 树控件和树视图
1. 树形视图的风格
常见的树控件风格如表所示,其修改方法与列表控件同的一般风格修 改方法相同。
7.7 文档视图结构
文档和视图是编程者最关心的,应用程序的大部分代 码都会被添加在这两个类中。文档和视图紧密相联,是用 户与文档之间的交互接口;用户通过文档视图结构可实现 数据的传输、编辑、读取和保存等。但文档、视图以及应 用程序框架的相关部分之间还包含了一系列非常复杂的相 互作用。切分窗口及一档多视是文档和视图相互作用的典 型实例。
7.7.1 文档与视图的相互作用
3. CView::OnUpdate函数
CView::OnUpdate函数是一个虚函数,当应用程序调用了CDocument:: UpdateAllViews函数时,应用程序框架就会相应地调用该函数。
virtual void OnUpdate( CView* pSender, LPARAM lHint, CObject* pHint ); pSender:文档所在视图类指针,当为NULL时表示所有的视图需要更新。 OnUpdate默认 (lHint = 0, pHint = NULL)使得整个窗口矩形无效。如果用 户想要视图的某部分无效,那么用户就要定义相关的提示(Hint)参数给出准 确的无效区域;lHint和pHint含义同UpdateAllViews。事实上,hint机制 主要用来在视图中根据提示标识值来获取文档或其他视图传递来的数据, 例如将文档的CPoint数据传给所有的视图类,则有下列语句:
第7章 文档和视图
(Document & View)
主讲教师:刘怀广
lhg81219@
7.1 字符串类CString
7.2 文档模板
用MFC AppWizard创建的单文档(SDI)或多文档(MDI)应用 程序均包含应用程序类、文档类、视图类和框架窗口类,这些 类是通过文档模板来有机地联系在一起。
7.7.2 应用程序对象指针的互调
2. 从视图类中获取文档对象和主框架对象指针 在视图类中获取文档对象指针是很容易的,只需调用 GetDocument 即可。而函数 CWnd::GetParentFrame 可实现 从视图类中获取主框架指针:
CFrameWnd* GetParentFrame( ) const;
virtual POSITION GetFirstViewPosition( ) const; virtual CView* GetNextView( POSITION& rPosition ) const;
//使用CDocument::GetFirstViewPosition和GetNextView重绘每个视图: void CMyDoc::OnRepaintAllViews() { POSITION pos = GetFirstViewPosition(); while (pos != NULL){CView* pView = GetNextView(pos);pView>UpdateWindow();} } // 实现上述功能也可直接调用UpdateAllViews(NULL);
7.7.2 应用程序对象指针的互调
1. 从文档类中获取视图对象指针
GetFirstViewPosition :获得与文档类相关联的视图列表中 第一个可见视图的位置。 GetNextView :获取指定视图位置的视 图类指针,并将此视图位置移动到下一个位置,若没有下一个视 图,则视图位置为NULL。
3. 在主框架类中获取视图对象指针 对 于 单 文 档 应 用 程 序 , 只 需 调 用 CFrameWnd 类 的 GetActiveView成员函数
CView* GetActiveView( ) const;
7.7.2 应用程序对象指针的互调
CXXApp CMainFrame
CChildFrame
GetDocument()->UpdateAllViews(NULL, 1, (CObject *)&m_ptDraw);
7.7.1 文档与视图的相互作用
4. CView::OnInitialUpdate函数