文档及视图的建立及关联

合集下载

文档、视图、框架窗口、文档模板之间的相互关系

文档、视图、框架窗口、文档模板之间的相互关系

文档、视图、框架窗口、文档模板之间的相互关系要了解文档、视图、框架窗口、文档模板之间的相互关系,关键要理解他们的结构1、首先应该对 CWinApp类有充分的了解它包含并管理着应用程序的文档/视窗的所有信息。

它有一个成员变量CDocManager * m_pDocManager,此变量是文档/视窗的管理器,m_templateList是CDocManager里的一个列表,此列表里保存了所有文档模板的指针,当用户调用CWinApp::AddDocTemplate( pDocTemplate ) 后该pDocTemplate存入了CWinApp::m_pDocManager::m_templateList里。

CWinApp::GetFirstDocTemplatePosition()CWinApp::GetNextDocTemplate(POSITION& pos)是遍例所有的文档模板指针。

2、上面我们提到了文档模板(CMultiDocTemplate(我们主要针对对文档)),这是一个极重要的类。

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 我们最熟悉不过了。

视图和索引的创建和使用实验报告

视图和索引的创建和使用实验报告

信息工程学院实验报告课程名称:《数据库原理》Array实验项目名称:视图和索引的创建和使用一、实验目的:(1)掌握创建视图的SQL语句的用法。

(2)掌握修改视图的方法。

(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作用。

(4)熟悉索引的作用,以及不同类型索引的区别。

(5)学会用T-SQL语句对表创建和删除索引二、实验设备与器件Win7 +Sql server 2008三、实验内容与步骤利用备份文件school,还原数据库,然后完成以下实验内容:(1)用T-SQL语句,定义信息系学生基本情况视图V_IS。

(2)用T-SQL语句,将Student,Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。

(3)用T-SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG。

(4)用T-SQL语句,定义一个反映学生出生年份的视图V_YEAR。

(5)用T-SQL语句,将各位学生学号、选修课程的门数及平均成绩定义为视图V_AVG_S_G。

(6)用T-SQL语句,将各门课程的课程号、选修人数及平均成绩定义为视图V_AVG_C_G。

(7)用T-SQL语句完成以下视图操作,查看结果,并分析原因。

①通过视图V_IS,将学号为“200215125”的学生姓名更改为“张小立”,并查看结果;②通过视图V_IS,新增加一个学生记录 ('200215126','黄笑',19, '男','IS'),并查看结果。

③通过视图V_IS,新增加一个学生记录 ('200215127','李霞',19, '女','MA'),并查看结果。

④通过视图V_IS,删除学号为“200215126”的学生信息,并查看结果。

⑤通过视图V_S_C_G,将学号“200215122”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。

第八章 VC++文档和视图

第八章 VC++文档和视图

第8章文档和视图精讲MFC应用程序的核心是文档/视图结构。

在前面章节的学习中,已经接触了不少文档/视图结构的应用程序,本章将详细分析其结构和原理,并进一步学习使用复杂的文档结构、构造更加丰富的视图。

8.1 文档/视图概述使用MFC的AppWizard可以创建三种类型的应用程序:(1)单文档界面的应用程序(SDI:Single Document Interface)(2)多文档界面的应用程序(MDI:Multiple Documents Interface)(3)基于对话框的应用程序(Dialog based)基于对话框的应用程序框架非常简单,由应用程序类、对话框类构成。

通过应用程序类的InitInstance()函数,构造一个模式对话框对象;调用DoModal()函数,让Windows对话框处理程序象通常情况一样接受和分配消息;用户退出对话框后,程序也就结束了。

我们已经知道SDI应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)和文档模板类(CSingleDocTemplate)共同作用。

MDI应用程序与SDI 应用程序的主要差别在于:MDI有CMDIFrameWnd和CMDIChildWnd两个框架窗口类,前一个派生CMainFrame类,负责菜单等界面元素的主框架窗口管理;后一个派生CChildFrame类,负责相应的文档及其视图的子框架维护。

而SDI由框架窗口类CFrameWnd 派生CMainFrame类。

一个文档可以有多个视图,但一个视图只能对应一个确定的文档。

因此,MDI应用程序需要解决的问题是多个文档的数据管理方法。

在MDI应用程序中,文档模板只支持主窗口。

每打开一个新文档时,都调用文档类的成员函数OnNewDocument(),建立一个由CMDIChildWnd派生的新的MDI子窗口,在子窗口中保存已打开的文档,所有这些细节都由MFC库来处理。

WORD的基本操作及使用技巧

WORD的基本操作及使用技巧

WORD的基本操作及使用技巧一、创建word文档1、启动word在windows桌面下,依次单击开始---程序---Microsoft word菜单命令或在桌面上双击WORD图标。

标题栏工具栏菜单栏插入点标尺文档工作区绘图工具栏状态栏二、创建新文档1、文稿的输入在插入处输入文字,即“I”形处。

2、输入特殊内容依次单击插入——符号菜单命令,选择特殊符号,单击插入按钮。

三、编辑文档1、修改错误文本按退格键可删除插入点前的字符;按delete可删除插入点后面的字符.2、选中文本内容移动鼠标到要选中文本内容起始处按下鼠标左键,并移动鼠标到文本结束的地方松开鼠标,这时选中的对象反白显示;要选中全部文档,依次单击编辑——全选或按快捷键ctrl+A3、移动文本选中对象——按ctrl+X——将插入点定位到文本移动的目的地——按ctrl+V。

4、复制文本选中对象——按ctrl+C——将插入点定位到文本移动的目的地——按ctrl+V。

5、删除文本内容选中要删除的文本,按delete键。

6、撤销操作单击工具栏上的撤销按钮,即7、查找和替换字符依次单击编辑——查找,在查找对话框中输入要找的内容——在替换中输入要替换的内容还可以根据需要设置格式。

如果要替换文档中所有字符,单击“全部替换”四、文档基本操作1、保存文档依次单击文件——保存菜单。

打开“保存”对话框,单击“保存位置”下拉按钮,在弹出的下拉列表框中单击要使用的磁盘,在文件名文本框中输入“文件名”,文件类型使用默认的类型,单击“保存”按钮。

2、打开文档打开word窗口,然后依次单文件——打开菜单,在对话框中单击“查找范围”下拉按钮,在列表框中单击磁盘——双击找到的文件名。

五、视图方式的选择选择文档显示方式1、各种视图效果:普通视图:它是word的默认视图方式。

在普通视图下,可以键入文本,编辑与编排文本格式,但不显示页码、图片、图文框等打印内容,分页符也只是一条虚线。

《管理系统中计算机应用》名词解释和简答论述

《管理系统中计算机应用》名词解释和简答论述

1、信息反馈的定义:控制物流的输入信息作用于受控对象后,把产生的结果信息返回到输入端,并对信息再输入发生影响的过程。

而上述作用于受控对象后的结果信息称为反馈信息。

2、固定信息是具有相对稳定性的信息,在一段时间内可以在各项管理任务中重复使用,不发生质的变化。

它是企业一切计划和组织工作的重要依据。

流动信息(作业统计信息),它反映生产经营活动中实际进程和实际状态的信息。

3、战略信息:供企业高级管理者进行战略决策时使用,包括系统内外、过去和现在、各种环境的大量信息。

战术信息:供企业中级管理人员完成大量计划编制、资源分配等工作时使用。

主要包括系统内部各种固定信息,历史情况与现状信息、以及部分具体的外部信息。

业务信息:供企业基层管理人员执行已经制定的计划,组织生产或服务活动时使用。

主要包括直接与生产、业务活动有关的、反映当前情况的信息。

4、原始信息收集:在信息或数据发生的当时、当地,从信息或数据所描述的实体上直接把信息或数据取出,并用某种技术手段在某种介质上记录下来。

二次信息收集:收集已记录在某种介质上,与所描述的实体在时间与空间上已分离开的信息或数据。

¥5、电子数据处理(ElectronicDataProcessing,EDP)这一阶段计算机在管理中的应用主要在于日常业务与事务的处理、定期提供系统的业务信息。

EDP的主要目标是提高管理人员处理日常业务的工作效率,减轻工作负担,节省人力和降低工作费用。

6、管理信息系统(ManagementInformationSystem,MIS)是为实现企业整体目标,对管理信息进行系统的处理,为各级管理人员提供业务信息和辅助决策的信息系统。

7、决策支持系统(DecisionsupportSystem,DSS)。

DSS是在半结构化决策活动过程中,通过人机对话,向决策者提供信息,协助决策者发现和分析问题、探索决策方案,评价、预测和选择方案,以提高决策有效性的一种以计算机为手段的信息系统。

MFC多文档多视图编程

MFC多文档多视图编程

深入了解MFC中的文挡/视结构李泽宇金刚熊联欢姜军(华中理工大学图象识别与人工智能研究所)Visual C++ 5.0 以其功能强大、用户界面友好而倍受程序员们的青睐。

但是,在当前的Microsoft 基本类库4.2 版本中,大约有将近200 个类,数千个函数,加之Microsoft 公司隐藏了一些技术细节,使得人们深入学习MFC变得十分困难。

MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用、单文档应用(SDI)和多文档应用(MDI)。

前两者的结构较简单,本文不再赘叙。

笔者拟从MFC中的文档/视结构入手,分析一些函数的流程,并解决编制MDI 应用程序过程中的一些常见问题。

(一)、了解文档/视结构MFC应用程序模型历经多年以有了相当大的发展。

有一个时期,它只是个使用应用程序对象和主窗口对象的简单模型。

在这个模型中,应用程序的数据作为成员变量保持在框架窗口类中,在框架窗口的客户区中,该数据被提交显示器。

随着MFC2。

0的问世,一种应用程序结构的新方式----MFC文档/视结构出现了。

在这种结构中,CFrameWnd繁重的任务被委派给几个不同类,实现了数据存储和显示的分离。

一般情况下,采用文档/视结构的应用程序至少应由以下对象组成:。

应用程序是一个CwinApp派生对象,它充当全部应用程序的容器。

应用程序沿消息映射网络分配消息给它的所有子程序。

框架窗口是一CfrmeWnd派生对象。

文档是一个CDocument派生对象,它存储应用程序的数据,并把这些信息提供给应用程序的其余部分。

视窗是Cview派生对象,它与其父框架窗口用户区对齐。

视窗接受用户对应用程序的输入并显示相关联的文档数据。

通常,应用程序数据存在于简单模型中的框架窗口中。

在文档/视方式中,该数据移入称为document 的独立数据对象。

当然,文档不一定是文字,文档是可以表现应用程序使用的数据集的抽象术语。

而用户输入处理及图形输出功能从框架窗口转向视图。

如何在MFC单文档中创建多视图

如何在MFC单文档中创建多视图

u 一个文档可以有多个视图,由Document中成员变量CPtrList m_ViewList维护。
u CFrameWnd拥有一个成员变量CView* m_pActiveView指向当前活动的View。
u CView中拥有一个成员变量CDocument* m_pDocument指向该视图相关的Document。
!m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(BottomLView), CSize(350, 240), pContext) ||
!m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(TopRView), CSize(350, 240), pContext) ||
/wang_qingyuan/blog/item/60870400275c5b087bec2cbd.html
深入分析MFC文档视图结构
2008-10-16 19:40
文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/View Architecture本身的复杂性加上VC产生的一系列代码足够让我们眼花缭乱,一时陷入云里雾里不可自拔。加上我们更多的人都没有经过Windows SDK Programming 的学习和经历就直接进行MFC Programming的学习和开发,更是面对一堆的代码不知所措。

实验一 文档的创建与排版_大学计算机基础实践教程(微课版)_[共6页]

实验一 文档的创建与排版_大学计算机基础实践教程(微课版)_[共6页]

第3章文字处理软件Word 2010 本章从Word 2010的基本操作开始,通过文档的创建与排版、表格制作、图文混排三个实验让学生能够掌握使用Word 2010进行编辑和排版的主要技术以及图、文、表混排文档的制作方法,并通过相关的拓展训练内容使学生能够灵活地根据不同的使用需求完成各种常见的文档的制作。

实验一 文档的创建与排版一、实验学时2学时。

二、实验目的● 熟练掌握Word 2010的启动与退出方法,认识Word 2010主窗口的屏幕对象。

● 熟练掌握操作Word 2010功能区、选项卡、组和对话框的方法。

● 熟练掌握利用Word 2010建立、保存、关闭和打开文档的方法。

● 熟练掌握输入文本的方法。

● 熟练掌握文本的基本编辑方法以及设定文档格式的方法,包括插入点的定位、文本的输入、选择、插入、删除、移动、复制、查找和替换、撤消与恢复等操作。

● 掌握文档的不同视图显示方式。

● 熟练掌握设置字符格式的方法,包括选择字体、字形与字号,以及字体颜色、下划线和删除线等。

● 熟练掌握设置段落格式的方法,包括对文本的字间距、段落对齐、段落缩进和段落间距等进行设置。

● 熟练掌握首字下沉、边框和底纹等特殊格式的设置方法。

● 掌握格式刷和样式的使用方法。

● 掌握项目符号和编号的使用方法。

● 掌握利用模板建立文档的方法。

三、相关知识1.基本知识Word 2010是Microsoft Office办公系列软件之一,是目前办公自动化中最流行的、全面支持3233 简繁体中文的、功能更加强大的新一代综合排版工具软件。

Word 2010的用户界面仍然采用Ribbon 界面风格,包括可智能显示相关命令的 R ibbon 面板,但是在Word 2010中采用“文件”按钮取代了 Word 2007 中的“Office ” 按钮。

Microsoft Office Word 2010 集编辑、排版和打印等功能为一体,并同时能够处理文本、图形和表格,满足各种公文、书信、报告、图表、报表以及其他文档打印的需要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档与视图的建立和关联本文讨论一下单文档与多视的问题,主要介绍一下笔者在学习VC++6.0过程中探索出的一些个人经验,并给出了实现它们的的主要程序框架。

一.建立文档与视图:在Projects选MFC Appwizard(exe),键入工程名,点ok后选单文档,选择默认值,在第四步时,在Advanced…里的Window Styles的Use split window前打√。

二.文档多视:当我们需要从不同的角度来看单文档的内容时,这就要我们实现多视了,多视有两种实现方案:静态的和动态的。

这就根据不同的需要来实现了。

动态的方法一般在程序中已经实现了,自动生成的源代码:BOOL CMainFrame::OnCreateClient(LPCREA TESTRUCT /*lpcs*/,CCreateContext* pContext){return m_wndSplitter.Create(this,2, 2, // TODO: adjust the number of rows, columnsCSize(10, 10), // TODO: adjust the minimum pane sizepContext);}而静态的方法却麻烦一点,下面我详细介绍一下:首先我们先插入一个类:class CMyView : public ClistView在MainFrm.cpp加入#include "MyView.h"在MainFrm.h中声明CSplitterWnd m_splitterWnd; //声明分隔器对象,已经自动生成了。

在函数CMainFrame::OnCreateClient里加入下面一些代码,只要把原有的代码删去。

If(!m_splitterWnd.CreateStatic(this,1,2,WS_CHILD | WS_VISIBLE))//一行两列return false;//不成功就返回else{m_splitterWnd.CreateView(0,1,RUNTIME_CLASS(CMyEditView),CSize(100,300),pContext);m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CMyView),CSize(100,100),pContext);// CmyEditView和CmyView是自己定义的视图类。

//CSize(100,300)是初始化时的大小return TRUE;//成功的返回值}这样程序一旦执行就会把窗口分割成左右两部分。

但是有时我们需要实现这样的功能:一旦发出一个消息时,我要使其中的一个视图消失,研究一下,可以删去或者隐藏这个视图,相对应恢复时就要重建或者显示这个视图,具体的实现在后面再详解吧!由于我们有时分割视图,不是很有规则的1*2,3*1,2*2等形式,而是在分割的视图里再分割,如图:视图二CviewView2视图一CviewView1视图三CviewView3声明一个分隔器对象:在MainFrm.h中声明CSplitterWnd m_splitterWnd1代码为:m_wndSplitter1.CreateStatic( &m_wndSplitter,2, 1, WS_CHILD | WS_VISIBLE,m_wndSplitter.IdFromRowCol(0, 0));// 创建各个视m_wndSplitter.CreateView(0, 1,RUNTIME_CLASS(CviewView1), CSize(0, 0), pContext);m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(CviewView2), CSize(0, 0), pContext);m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CviewView3), CSize(0, 0), pContext);......如果使用自由定义的视图大小来实现呢?SIZE size;CRect rect;GetClientRect(&rect);size.cx = rect.right/2size.cy = rect.bottom/2;只要把size放在Csize(0,0)所在的位置就可以了,用这个方法我们就可以在程序中自由地实现视图窗口大小的变化了。

到了这里又有一个问题提出来了,我们不光删去或者隐藏视图,有时只是简单的视图之间的切换,也可以说有的一个框架包含多个视,而在任何时刻只能显示其中的一个视,还是后面再说吧!三.获得视图指针。

获取视图的指针作为单独的一点来讲,自然有它的重要性,视图与文档,特别在文档与不相干的视图间,视图与视图间的消息传递及互相之间的调用函数或者变量的时候就要获取视图或文档的指针。

a) 获取文档的指针:与文档相连的视图可以直接获取,这里就不说了,但与文档一点关系都没有的视图要想获取文档的指针就不可以直接获取了。

CMyEditDoc * pDoc=(class CMyEditDoc *)Getdocument.);上面就是获取的方法。

b) 获得视图指针:i. 在其中的一个视图中获取其它视图的指针:CMainFrame* MainFrame1=(CMainFrame*)this->GetParent()->GetParent();CMyEditView* pView=(CMyEditView*)MainFrame1->m_wndSplitter.GetPane(0,1);This指针代表当前视图的指针,它通过获取CmainFrame的指针再去获取视图的指针,这样有个好处在于可以获得任意视图的指针。

还有一种方案可以实现,但是它有个缺点,你只能把获得的指针作为Cview的指针看待,这样你就不能实现特殊视图的功能了。

CMyEditDoc * pDoc=Getdocument.);CView * pView;POSITION pos=pDoc->GetFirstViewPosition();if(pos!=NULL){pView=pDoc->GetNextView(pos);}在{}里加入多个pView=pDoc->GetNextView(pos);(原因我也说不出来)就可以获得你所要得视图。

如果你在开始就定义你所接触视图的指针,只不过没有初始化而已,就方面了好多。

m_pEditViewright =( CMyEditView* )m_splitterWnd.GetPane(0,1);// m_pEditViewright已定义。

ii. 在CmainFrame获取视图的指针:CMyEditView* pView=(CMyEditView*)this->m_wndSplitter.GetPane(0,1);这样就行了,同样在文档里获取视图的方法也可以类似,这里就不重复了,但我强调一点要注意头文件的加入。

四.单文档多视的实现:a) 单框架窗口中的多视:获取你要处理的两个视图指针:pViewAdd,pViewRemove:// 显示活动视而隐藏非活动视pViewAdd->ShowWindow(SW_SHOW);pViewRemove->ShowWindow(SW_HIDE);// 将新的活动视连接到文档,并断开原来的视与文档的连接。

pDoc->AddView(pViewAdd);pDoc->RemoveView(pViewRemove);SetActiveView(pViewAdd);RecalcLayout();//告知当前分割窗口,重新显示。

方法二你可以把其中的一个视图移到看不到的地方,活动视变换时就是移动的变换。

方法三你可以先删去其中的一个视图,需要时再重建,然后删去那个视图。

这两个方案在下面再详细说明吧!b) 单文档分割视图的某分割区的多视的实现i. 移动视图获取视图指针pViewpView->SetWindowPos(0, 0, 1000, 1500, 1000, SWP_SHOWWINDOW);这样移动后在当前窗口下你一般是看不到你移动的视图,但当你改变窗口的大小时,有什么情况发生,没有达到你的期望吧,行,你在OnSize这个函数里加入一些代码,比较简单我就不说了。

ii. 删除视图m_wndSplitter1.DeleteView(0,0); // 删除原来的视运行一下程序还可以,发现我们删除的视图上点击无事件发生,而且出现中断程序。

显然只有这句话还不行的,这就要按照你的要求把窗口重新分割一下或者使用一个新的视图来填充一下。

重新分割可以用CMainFrame::OnCreateClient里的代码的方法实现它,在这里我就不重复了。

五.视图间的通信:在前面我已经把获取视图的指针作为一大点来解释,其实在不要讲很多大家就会明白的,因为你不管是关联还是不关联的视图,你只要获取它的指针就可以对它进行任意的操作,甚至它的私有函数(当然不能直接了)。

下面我就举一例。

在CviewView1里加入一个公共函数void simple();如果你要实现的一些功能就可以写在这个函数里void CviewView1::simple(){CClientDC dc(this);dc.TextOut(0,0,"我要实现视图间的通信,我一定会成功的!");}void CviewView2::OnLButtonDblClk(UINT nFlags, CPoint point){CMainFrame* MainFrame1=(CMainFrame*)this->GetParent()->GetParent();CMyEditView* pView=(CMyEditView*)MainFrame1->m_wndSplitter.GetPane(0,1);pView->simple();}六.CSplitterWnd的扩展:为什么要扩展CSplitterWnd呢?这是从整个界面来想的,当你分割窗口之后就不希望拖动分割条时它位置的改变,你也需要在分割条上有希望的颜色的出现,这时就要扩展CSplitterWnd一下,其实扩展东西很多,我也只简单说一下吧!不希望通过拖动分割条来调节窗口的大小,你就要锁定分割条,根据你的需要让CWnd窗口蔽掉这些消息void CSplitterWnd::onMouseMove(UINT nFlags,CPoint point){CWnd::onMouseMove (nFlags,point);}七.使用视图控件。

相关文档
最新文档