实验六 框架窗口、文档和视图

合集下载

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

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

文档、视图、框架窗口、文档模板之间的相互关系要了解文档、视图、框架窗口、文档模板之间的相互关系,关键要理解他们的结构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 我们最熟悉不过了。

实验报告(VC++)2

实验报告(VC++)2

实验一:框架接口、文档模板和文档视图的使用实验目的:1、熟练掌握框架窗口的使用2、熟练掌握文档模板的使用3、基本掌握使用多个文档类型4、基本掌握文档视图结构实验内容:1、框架窗口的使用2、文档模板的使用3、使用多个文档类型4、文档视图结构的使用实验步骤:在向导中修改窗口风格:1、选择“文件”——“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,选择MFC AppWizard的项目类型,指定项目工作文件夹位置,输入项目名Ex_SDI2单击“确定”按钮。

2、在向导的第一步,将应用程序类型选为“单个文档”。

3、单击“下一个”按钮,出现向导的第二步对话框,在这里用户可以选择程序中是否假如数据库的支持。

4、单击“下一个”按钮,出现向导第三步对话框,允许用户在程序中加入符合文档、自动化、ActiveX控件的支持。

5、单击“下一个”按钮,出现向导第四步对话框,对话框的前几项依次确定对浮动工具条、打印与预览以及通信网络等特性的支持。

对话框的最后两项是最近文件列表数目的设置和一个“高级”按钮。

6、在第四步对话框中,单击“高级”按钮,分别用于文档模板字串资源内容和窗口风格的修改。

7、单击“关闭”按钮回到向导对话框,单击“下一个”按钮,。

在这里用户可选择:应用程序的主窗口是MFC标准风格还是窗口左边有切分窗口的浏览器风格,在源文件中是否加入注释来引导用户编写程序代码,是只用动态链接库还是静态链接库。

8、单击“下一个”按钮,在这里,用户可以对MFC AppWizard提供的默认类名、基类名、各个源文件名进行修改。

实验二:常用控件的使用实验目的:1、熟练掌握创建和使用静态控件和按钮2、熟练掌握创建和使用编辑框和按钮控件3、熟练掌握创建和使用列表框4、熟练掌握创建和使用组合框5、基本掌握创建和使用进展条、滚动条和滑动条6、基本掌握创建和使用图像列表、列表和树控件实验内容:1、创建和使用静态控件和按钮2、创建和使用编辑框和按钮控件3、创建和使用列表框4、创建和使用组合框5、创建和使用进展条、滚动条和滑动条6、创建和使用图像列表、列表和树控件实验步骤:1)控件的创建方法:一种是在对话框模板中用编辑器指定控件,另一种是编程方式,即调用MFC相应空间类的成员函数Create来创建,并在Create函数指定控件的父窗口指针。

MFC实验六 文档视图和单文档界面

MFC实验六 文档视图和单文档界面

实验六文档/视图和单文档界面1.创建一个单文档界面应用程序,项目名设置为wx03.2.在文档类CWx03Doc中添加数据成员用于保存应用程序的数据。

二维数组m_clrGrid用于保存每个方格的颜色,数据成员m_clrCurrentColor用于保存方格被单击时赋给方格的颜色。

3.在文档类CWx03Doc的OnNewDocument函数中对数据成员进行初始化:4.向类wx03Doc添加三个成员函数,如下:函数定义如下:GetCurrentColor、GetSquare和SetSquare作为文档和视图之间的桥梁,视图对象通过它们可以访问文档的保护成员。

5.编辑CWx03View的OnDraw函数,在视图窗口中绘制网格,并根据文档类中保存的方格颜色来设置方格的颜色。

6.在视图类CWx03View中添加消息处理函数WM_LBUTTONDOWN的处理函数:7.利用菜单编辑器编辑个添加如下菜单,各菜单的属性设置如下表:8.9.为添加的菜单项添加命令消息处理函数和用户界面更新命令处理函数。

由于这些函数都是针对文档数据的操作,因此将这些菜单命令的消息处理函数添加在文档类中。

10.编译、链接和运行程序,结果如下:11.添加序列化功能,将各个方格的颜色以及当前颜色存入文件,并允许从文件中读取。

12.编写一个SDI程序,可以用鼠标在视图窗口中划线,并能将所画的线条保存。

13.定义一个新类Cline。

14.编辑类Cline,在其中添加相应的数据成员和成员函数。

15.在文档类中添加保存线段的数组。

在头文件wx03Doc.h中添加如下的数据成员和成员函数,并包含定义类Cline的头文件和使用MFC模板类时需要的头文件:在文档类的实现文件中编写添加的成员函数:16.当在视图窗口中按下鼠标右键时开始画线,鼠标右键抬起时完成线段的绘制,在鼠标移动的过程中画橡皮筋线。

因此需要记录划线的起点和终点并设置画橡皮筋线的跟踪标志。

画橡皮筋线时,需要将原来的线条删除,重新画一条从起点到当前鼠标指针坐标的线条,最简单的办法是使用R2_NOT绘图模式反转线条。

实验六、 视图和图表

实验六、 视图和图表
CREATE VIEW 借阅_计算机图书 AS SELECT 图书.*,借阅.* FROM 图书,借阅
WHERE 图书.书号=借阅.书号AND图书.类别=‘计算机’ 3)调出创建图表向导,完成在图书_读者数据库中建立图书 _借阅图表的操作。要求该图表包括图书和借阅两个表,通 过“图书.书号=借阅.书号”外码与被参照表之间的关联。 4)查看以上视图和图表的属性,并修改到正确为止。
7. 注意事项
(1)参照表和主表之间的关系。主码和 外码间的关系。
(2)视图中字段名的重命名问题。
本节结束,谢谢
关联线
建立表间关联对话框
关系图名
参照表和主码 关联属性
主表和外码
关系图的字段弹出单
6. 实验报告要求
(1)写出实验目的、实验内容、实验结果和主要实 验步骤。 (2)列出实验前准备的实验数据:相关的T- SQL语 句;视图结构信息;关系图信息。 (3)写出实验中出现的问题、注意事项和解决方 法。 (4)写出体会和提高。
实验六、 视图和图表的定义
机械工业出版社
1. 实验目的
使学生掌握利用SQL Server企业管理器的视 图创建向导和图表创建向导建立视图表和关系图 (图表),加深对视图和图表概念的理解,了解 视图和图表的作用。
2. 实验内容
(1)用Transact-SQL描述视图,在SQL Server 企业管理器中创建视图,查看视图属性,修改视 图定义和删除视图。 (2)在SQL Server企业管理器中创建数据库图 表,查看数据库图表属性,修改数据库图表定义 和删除数据库图表。
4. 实验前准备
1)查看图书-读者库结构信息,根据给定的T-SQL语 句确定视图结构信息。 2)查看图书-读者库结构信息,根据题目要求确定图 表结构信息。

第6章 框架窗口、文档和视图

第6章  框架窗口、文档和视图

图6.14 更改CEx_EditView的基类
(4) 单击[完成]按钮,编译运行,打开一个文档,结果如图 6.15所示。
图6.15 Ex_Edit运行结果
6.4.1 一般视图类的使用
2. CRichEditView类 类 • CRichEditView类使用了复合文本编辑控件,因此它支 类使用了复合文本编辑控件, 类使用了复合文本编辑控件 持混合字体格式和更大数据量的文本。 持混合字体格式和更大数据量的文本。
6.5.1 文档与视图的相互作用
1. CView::GetDocument函数 函数
产生应用程序CView类时,它同时也创建 类时, 当MFC AppWizard产生应用程序 产生应用程序 类时 一个安全类型的GetDocument函数 一个安全类型的 函数 它返回的是指向用户派生文档类的指针。 它返回的是指向用户派生文档类的指针。 该函数是一个内联(inline)函数,如下面的代码: 函数,如下面的代码: 该函数是一个内联 函数
5. CScrollView类 类 • CScrollView类能直接支持视图的滚动操作 类能直接支持视图的滚动操作 • 能管理视口的大小和映射模式,并能响应滚动条消息、键 能管理视口的大小和映射模式,并能响应滚动条消息、 盘消息以及鼠标滚轮消息。 盘消息以及鼠标滚轮消息。
6.5 文档视图结构
MFC AppWizard为用户的派生文档类自动产生了重载的 为用户的派生文档类自动产生了重载的 OnNewDocument函数,如下面的代码: 函数, 函数 如下面的代码: BOOL CMyDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) //注意一定要保证对基类函数的调用, 注意一定要保证对基类函数的调用, 注意一定要保证对基类函数的调用 return FALSE; // Do initialization of new document here. return TRUE; }

操作窗口和框架范文

操作窗口和框架范文

操作窗口和框架范文在计算机使用中,窗口和框架是我们经常接触到的概念。

窗口代表着应用程序的一个可视化界面,而框架则是一个应用程序的基本组织结构。

本文将介绍如何操作窗口和框架。

一、操作窗口1. 打开和关闭窗口:双击应用程序的图标可以打开窗口,点击窗口右上角的关闭按钮可以关闭窗口。

另外,可使用Alt+F4快捷键关闭当前活动的窗口。

2.最大化和最小化窗口:窗口的右上角有三个按钮,分别是关闭、最小化和最大化按钮。

点击最大化按钮使窗口充满整个屏幕,再次点击使窗口还原到原来的大小。

点击最小化按钮将窗口缩小到任务栏中的一个图标,再次点击可以还原窗口。

3.调整窗口大小:将鼠标光标移动到窗口的边缘或角落,当光标变为可调整大小的箭头时,按住鼠标左键并拖动即可调整窗口的大小。

4. 激活和切换窗口:当打开多个窗口时,只有一个窗口处于活动状态。

点击一些窗口使其活动,或使用Alt+Tab快捷键在不同的窗口之间进行切换。

二、操作框架1.创建框架:打开一个新的应用程序,通常会出现一个默认的空白框架,也可以通过菜单栏中的“文件”->“新建”来创建一个新的框架。

2.添加和移除窗口:在框架中,可以添加多个窗口来完成不同的任务。

通过菜单栏中的“窗口”选项可以添加新窗口,也可以通过右键点击框架中的空白区域来添加窗口。

同样,也可以通过菜单栏或右键菜单中的“关闭”选项来移除窗口。

3.调整框架布局:在一些应用程序中,可以根据需要将窗口拖动到框架的不同位置,以实现不同的布局。

拖动窗口的标题栏使其重新定位,或使用窗口右上角的布局按钮来实现自动分屏。

4.分割框架:有些框架提供了分割视图的功能,可以将框架分割成多个区域,每个区域可以显示不同的内容。

通过菜单栏或右键菜单中的“分割视图”选项选择水平或垂直分割,然后拖动分割条来调整分割的大小。

总结:操作窗口和框架是计算机使用中的基本技能。

通过掌握如何打开、关闭、最大化、最小化窗口,调整窗口大小,激活和切换窗口,以及创建、添加、移除窗口,调整框架布局和分割框架,我们可以更高效地使用计算机中的应用程序。

vb实验六_窗体、标签、文本框和按钮_实验报告

vb实验六_窗体、标签、文本框和按钮_实验报告

电子信息工程学系实验报告课程名称:面向对象程序设计实验项目名称: 实验六 窗体、标签、文本框和按钮 实验时间:班级: 姓名: 学号:一 实 验 目 的:1)学会添加多个窗体。

2)掌握启动窗体和切换窗体。

3)掌握为窗体添加事件代码。

4)掌握标签在属性和事件代码。

5)掌握文本框属性和事件代码。

6)掌握按钮事件代码。

二 实 验 环 境:Windows XPVisual 2003三 实 验 内 容 过 程 及 结 果 分 析:一.窗体和控件应用1.创建窗体创建一个项目。

由两个窗体组成。

Form1用于输入用户名和用户密码,当输入正确时单击 确定按钮显示form2,同时掩藏form1;当输入出错则提示出错,单击退出按钮结束程序;form2中显示“欢迎登录!“,单击form2中在返回按钮回到form1.并关闭form2新建一个 项目form1,然后选择项目菜单在添加windows 窗体命令,添加一个窗体form2。

2设置启动窗体本程序默认的启动窗体是form1.,选择项目菜单在属性命令,再单击启动对象选择form1如下图所示:3.界面设计如下图所示:对form1设计属性窗口如下: Form2的界面窗口如下图所示:4.编写事件代码:在窗体1的文本框中分别输入用户名和口令,单击确定按钮,当用户名为“abc”并且口令为“123”是显示窗体2,否则提示出错。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickIf TextBox1.Text = "abc" And TextBox2.Text = "123" ThenDim form2 As New Form2form2.Show()ElseMsgBox("请输入正确在用户名和密码!", MsgBoxStyle.Critical)End IfEnd SubPrivate Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click'单击"退出"按钮结束程序。

第7章 框架窗口、文档和视图

第7章 框架窗口、文档和视图
14
7.2文档及其序列化 (7 of 10)
保存文档 MFC AppWizard创建应用程序时,会自动将“File”菜 单中的“Save”命令与文档类CDocument的OnFileSave函 数关联起来,在程序框架中看不到相应的代码。
OnFileSave函数会完成下列工作:
(1) 弹出通用“保存”对话框,让用户提供一个文件名。 (2) 调用文档对象的CDocument::OnSaveDocument虚成 员函数,并自动调用Serialize函数,将CArchive对象中 的内容保存在文件中。
23
7.3视图及视图类 (4 of 4)
CScrollView类 CScrollView类不仅能直接支持视图的滚动操作,而且还 能管理视口的大小和映射模式,并能响应滚动条消息、 键盘消息以及鼠标滚轮消息。 滚动视图第一次被创建时,往往在重载的 CView::OnInitialUpdate或CView::OnUpdate中调用 CScrollView成员函数SetScrollSizes来设置滚动窗口的大 小、水平或垂直方向的滚动量等。
13
7.2文档及其序列化 (6 of 10)
序列化函数:
void Serialize (CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } }
9
7.2文档及其序列化 (2 of 10)
打开文档 OnFileOpen函数会完成如下一些工作: (1) 弹出通用“打开”对话框,供用户选择一个文件。 (2) 调用文档对象的CDocument:: OnOpenDocument虚成 员函数。该函数将打开文件,并调用DeleteContents清除 当前应用程序的文档对象的内容,然后创建一个 CArchive对象用于数据的读取,并自动调用Serialize函 数完成读取操作。 (3) 调用视图对象的CView::OnInitialUpdate虚成员函 10)

可视化程序设计VC++教学大纲

可视化程序设计VC++教学大纲

《可视化程序设计VC++》教学大纲课程名称:可视化程序设计VC++ 课程代码:08120130课程类型: 专业核心课学分:4 总学时:80 理论学时:48 上机学时:32先修课程:《面向对象程序设计C++》适用专业:计算机科学与技术本科专业一、课程性质、目的和任务《可视化程序设计VC++》是计算机科学与技术本科专业的核心课程。

通过该课程的学习,培养和提高掌握C++程序设计以及应用Visual C++解决实际问题的能力。

二、教学基本要求1、知识、能力、素质的基本要求通过本课程的学习,学生要掌握C++语言的基本语法,了解面向对象的概念、MFC基本应用程序的建立、掌握对话框、常用控件、菜单、窗口、图形、文本、位图、数据库编程。

能正确运用面向对象的思维方法分析问题和解决问题,要具有较好的职业道德,具有创新意识。

2、教学模式基本要求本课程采用理论与实践相结合的教学方式。

理论课需要在多媒体教室进行,教师主要讲授VC++的基础知识和基本理论,学生在实验课上进行编程练习。

三、教学内容及要求第一章基本C++语言了解C++预处理,理解C++程序结构,C++基本语法,C++函数,C++指针和引用。

第二章 C++面向对象程序设计了解输入、输出流库,理解类和对象,继承、多态、虚函数、运算符第三章 MFC基本应用程序的建立了解Windows编程基础,编制一个MFC应用程序,掌握使用MFC AppWizard、类向导第四章对话框和常用控件掌握对话框的创建和使用,常用控件的创建和使用第五章菜单、工具栏和状态栏理解工具栏、状态栏,掌握菜单第六章框架窗口、文档和视图了解文档序列化、文档视图结构,理解视图及视图类、框架窗口、文档窗口第七章图形、文本和位图理解位图、图标与光标,掌握字体与文字处理、简单图形绘制第八章数据库编程了解MFC ODBC数据库概述、ADO 数据库编程、数据库相关的Active 控件,理解MFC ODBC 应用编程四、实验(上机)内容实验一认识Visual C++中文版开发环境、C++程序设计实验二 MFC基本应用程序的建立实验三对话框的建立实验四按钮控件的建立和应用实验五编辑框、列表框、组合框的建立实验六进展条、滚动条和滑动条的建立实验七菜单的建立实验八工具栏和状态栏的建立实验九框架窗口的建立实验十文档和视图的建立实验十一图形实验实验十二文本实验实验十三位图实验实验十四 ODBC数据库编程实验十五 ADO数据库编程实验十六综合案例:学生信息系统五、学时分配六、考核方法本课程突出过程考核和编程能力考核。

第6章框架窗口、文档和视图

第6章框架窗口、文档和视图

第6章框架窗口、文档和视图尽管窗口、文档和视图是MFC的基础,但可能也是最不容易理解的部分,因为其概念比传统编程所需要的Windows函数更强一些,因此,须在本章做进一步详细讨论框架窗口、文档和视图的方法和技巧。

6.1框架窗口分两类:一是应用程序主窗口,另一类是文档窗口。

6.1.1主窗口和文档窗口主窗口(或称主框架窗口)是应用程序直接放在桌面(DeskTop)上的那个窗口,每个应用程序只能有一个窗口,主窗口的标题栏上往往显示应用程序的名称。

主窗口类的源文件名是MainFrm.h和MainFrm.cpp,其类名是CMainFrame。

单文档SDI程序主窗口类是从CFrameWnd派生来的。

多文档MDI程序主窗口类是从CMDIFrame Wnd派生的。

如果应用程序中还有工具栏(CToolBar)状态栏(CStatusBar),那么在CMainFrame 类还含有表示工具栏和状态栏的成员变量m_wndToolBar和m_wndStatusBar,并在CMainFrame的OnCreate函数中进行初始化。

文档窗口对于SDI程序来说,它和主窗口是一致的,即主窗口就是文档窗口;对于MDI程序,文档窗口是主窗口的子窗口。

见书244页图6.1所示。

文档窗口一般都有相应的可见边框,他的客户区(初了窗口标题栏、边框外的区域)是由相应的视图来构成的,可以说视图是文档窗口内的子窗口。

文档窗口时刻跟踪当前处于活动状态的视图的变化,并将用户或系统产生的命令消息传递给当前活动视图。

而主窗口负责管理各个用户交互对象(包括菜单、工具栏、状态栏以及加速键)并根据用户操作相应地创建或更新文档窗口及其视图。

在MDI应用程序中,MFC AppWizard创建的文档子窗口类的源代码文件是ChildFrm.h和ChildFrm.cpp,其类名是CChildFrame,它是从CMDIChildWnd派生的。

6.1.2窗口风格的设置窗口的风格决定了窗口的外观及功能,用户通过风格的设置增加或减少窗口中所包含的功能,这些功能一般都是由系统内部定义的,不需要用户去编程实现。

实验六 窗体一

实验六 窗体一

【实验六】窗体(一)【实验名称】创建窗体操作(一)【实验目的】掌握使用窗体向导和其他窗体创建窗体,掌握利用窗体的几种视图方式调整窗体的布局,并熟练掌握用设计视图修改窗体属性的基本操作。

【实验学时】2学时。

【实验要求】1.先观察题目所示窗体的内容,再选择合适的方式(窗体、窗体设计、窗体导航,其他窗体)创建窗体。

2.在设计视图中对已经创建的窗体进行属性修改,并向其添加控件。

3.注意窗体(子窗体)的名称、标题和实验一致。

4.窗体设计尽量做到美观整齐。

【实验内容】1.创建纵栏式窗体“浏览学生基本信息”,如下图所示。

2.创建主子窗体“学生修课成绩汇总”(子窗体为“所修课程及成绩”),如下图所示。

3.以实验四查询的创建(二)中的“按照学号查询成绩”查询为数据源创建窗体“按照学号查询成绩”,窗体布局为数据表式。

窗体运行时如下图所示。

4.以“学生”表为数据源,创建分割窗体,要求在数据表视图中不能添加数据。

然后筛选出所有3月份出生的人员信息。

5.在设计视图中打开“浏览学生基本信息”窗体,修改其数据属性,使得本窗体只用于信息的查看,而不能修改和添加,修改方式如图所示。

修改窗体格式属性,去掉滚动条、导航按钮、记录选择器和分隔线,以及窗体最小最大化按钮、关闭按钮,修改窗体的弹出方式。

然后在窗体页脚中添加如下图所示的导航按钮,分别用以“转至第一条记录”,“转至前一项”,“转至后一项”,“转至最后一条记录”和“关闭窗体”。

在窗体页眉中添加“浏览学生基本信息”标签。

在窗体中添加文本框控件,显示当前日期。

适当修改窗体控件的大小和位置,调整窗体大小,使其美观整齐。

6.打开主子窗体“学生修课成绩汇总”的设计视图,按照上题方式修改主子窗体的格式、数据属性,去掉滚动条、导航栏(子窗体)等格式,并使窗体只用于信息浏览,不能修改和添加数据。

7. 将完成之后的数据库文件提交到本题。

应用程序框架与文档视图结构PPT教学课件

应用程序框架与文档视图结构PPT教学课件

2020/12/09
20
4.4 MFC窗口类 控制栏类
CContolBar CDialogBar CToolBar CStatusBar
2020/12/09
ห้องสมุดไป่ตู้
21
4.4 MFC窗口类
对话框类
CDialog类
CDataExchange
CCommonDialog
C CColorDialog CFontDialog
CRecordView 处理显示记录集的窗体视图
CFieldExchange 支持记录字段交换
CLongBinary 处理二进制大型对象
4.9 小结
MFC类库包含了200多个类
根据需要选择使用不同的类
2020/12/09
27
第5章 菜单、ClassWizard与 消息映射
掌握如何实现菜单,如何使用ClassWizard以及了解消息 映射的原理和应用。
CFindReplaceDialog CPrintDialog
CPageSetupDialog
2020/12/09
22
4.5 MFC异常类
调试支持类 CDumpContext 提供存放上下文环境堆功能 CMemoryState 提供了供内存使用的快照的结构功能
异常类 CException 所有异常类的基类 CArchiveException 文档归档异常管理类 CDaoException 处理DAO数据库运行失败引起的异常 CDBException 处理ODBC数据库运行失败引起的异常 C 处理文件异常 CMemoryException 处理内存异常
虚函数 打开已有文档时调用。 (3) CDocument类中OnSaveDocument()函数

第6章框架窗口界面设计

第6章框架窗口界面设计

第6章框架窗口界面设计第6章框架窗口界面设计6.1框架窗口6.2菜单6.3工具栏6.4状态栏6.5交互对象的动态更新6.6图标和光标6.1框架窗口6.1.1单文档和多文档程序框架窗口文档应用程序的MFC类结构如图是单文档应用程序Ex_SDI和多文档应用程序Ex_MDI的MFC类结构。

6.1框架窗口 CChildFrame类是从CMDIChildWnd派生而来,专门用来管理多文档应用程序中的文档窗口。

无论是CMDIChildWnd还是CMDIFrameWnd类,它们都是从CFrameWnd派生而来的。

对于基于对话框的应用程序,一般有CAboutDlg类、应用程序类和对话框类。

上述MFC类之间的继承和派生关系如图6.2所示。

6.1框架窗口项目的文件组织项目中源文件都是采用文件夹的方式进行管理的,将项目名作为文件夹名,此文件夹下包含源程序代码文件、项目文件以及项目工作区文件等。

每一个类的源代码均保存同名的h和cpp文件。

其他一些文件类型的含义: .opt 关于开发环境的参数文件,如工具条位置等信息 .aps(AppStudioFile) 资源辅助文件,二进制格式 .clw ClassWizard信息文件 .dsp(DeveloperStudioProject) 项目文件 .plg编译信息文件 .mdp(MicrosoftDevStudioProject) 旧版本的项目文件 .bsc 用于浏览项目信息.map 执行文件的映像信息纪录文件.pch(Pre-CompiledFile) 预编译文件,可以加快编译速度,但是文件非常大 .pdb(ProgramDatabase) 记录程序有关的一些数据和调试信息 .ncb无编译浏览文件(nocompilebrowser)还有相应的Debug(调试)、Res(资源)等子文件夹。

用应用程序向导创建项目时,系统自动为项目创建Win32Debug版本的运行程序,并使用相应的默认配置。

第6章 章框架窗口、文档和视图

第6章  章框架窗口、文档和视图

图6.5 Ex_MDIDemo字符串表资源
[例Ex_MDIDemo]
(3) 双击IDR_MAINFRAME列表项,弹出字符串属性对话框,将其标题修改为“多个 文 档类型实例”,结果如图6.6所示。
(4) 双击IDR_EX_MDITYPE列表项,在字符串属性对话框中,将其内容修改为:
6.1.2 窗口风格的设置
4. 使用ModifyStyle和ModifyStyleEx CWnd类中的成员函数ModifyStyle和ModifyStyleEx也可用来更改窗口的风格,其中Modify StyleEx还可更改窗口的扩展风格。这两个函数具有相同的参数,其含义如下。 BOOL ModifyXXXX( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 ); 其中,参数dwRemove用来指定需要删除的风格,dwAdd用来指定需要增加的风格,nFlags 表示SetWindowPos的标志,0(默认)表示更改风格的同时不调用SetWindowPos函数。 由于框架窗口在创建时不能直接设定其扩展风格,因此只能通过调用ModifyStyle函数来进 行。例如用MFC ClassWizard为一个多文档应用程序Ex_MDI的子文档窗口类CChildFrame添 加OnCreateClient消息处理,并增加下列代码: BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { ModifyStyle(0, WS_VSCROLL, 0); return CMDIChildWnd::OnCreateClient(lpcs, pContext); } 这样,当窗口创建客户区时就会调用虚函数OnCreateClient。运行结果如图6.3所示。

6 框架元素的基本操作

6 框架元素的基本操作

实验六框架元素的基本操作【实验目的】1.理解框架和框架集的相关概念;2.掌握简单结构框架(顶部框架和左侧框架)的创建方法;3.掌握复杂结构框架(顶部嵌套左侧框架)的创建方法;4.掌握框架结构中的添加链接的方法。

【实验内容】一、创建框架1.创建一个上下结构框架(顶部框架),分别命名为:f_ud.htm 、f_u.htm 、f_d.htm,在IE浏览器中浏览网页显示效果。

(提示:先保存框架,后保存框架集)2.创建一个左右结构框架(左侧框架),分别命名为:f_lr.htm 、f_l.htm 、f_r.htm,在IE浏览器中浏览网页显示效果。

3.在Dreamweaver代码窗口,把前面创建的左侧框架(f_lr.htm)嵌套到顶部框架(f_ud.htm)的下窗口中,形成一个复杂结构框架(顶部嵌套左侧框架),如右图所示;分析这个(顶部嵌套左侧)框架各个窗口之间的关系;在IE浏览器中浏览网页显示效果。

4.总结前面的实验所演示的方法,自己设计另一个复杂结构框架。

5.在Dreamweaver框架属性面板上设置各个框架和框架集的属性,并在代码窗口内观察并理解各标记属性的意义。

二、框架结构中的添加链接在前面创建的杂结构框架(顶部嵌套左侧框架:f_ud.htm)中完成下面操作:1.把上窗口命名为U、左窗口为L、主窗口为MAIN;2.在页面中添加文字,如右图所示;3.在左窗口中添加链接,链接目标为主窗口;4.在上窗口中添加链接,“央视国际网”的链接目“海南在线”的链接目标为下窗口、标为主窗口、“海南师范大学”的链接目标为整个窗口。

5.在IE浏览器中浏览网页,点出链接,观察链接效果。

6.利用Dreamweaver提供的框架工具按钮,如图所示,直接创建一个“顶部和嵌嵌套的左侧框架”,并试图完成上例所需求的链接。

【问题思考】1.比较实验中所示的两种创建复杂结构框架的方法,它们在实现不同链接时哪一种更灵活?【操作提示】实例所演示的复杂结构框架方法为:先创建简单结构的框架,再由简单结构的框架组合而成更复杂结构框架。

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

实验六框架窗口、文档和视图一实验内容创建一个基于ClistView视图的单文档应用程序Ex_Student,通过对话框输入一个学生记录,记录包括学生的姓名、学号和3门成绩。

然后将记录内容保存到一个对象数组集合类对象中,最后通过文档序列化将记录保存到一个文件中。

当添加记录或打开一个记录文件时,还会将数据显示在文档窗口中。

二实验步骤1.创建工作文件夹2.参照文档序列化实例添加用于学生记录输入的对话框,对话框布局如图所示;4.添加一个Cstudent类使该类可序列化在Ex_StudentDoc.h文件中的class CEx_StudentDoc前添加class CStudent:public CObject{CString strName;CString strID;float fScore1,fScore2,fScore3;float fAverage;DECLARE_SERIAL(CStudent)public:CStudent(){};CStudent(CString name,CString id,float f1,float f2,float f3);void Serialize(CArchive &ar);void Display(int y,CDC*pDC);//在坐标为(0,y)处显示数据};在Ex_StudentDoc.cpp文件中添加Cstudent实现代码CStudent::CStudent(CString name,CString id,float f1,float f2,float f3){strName=name;strID=id;fScore1=f1;fScore2=f2;fScore3=f3;fAverage=(float)((f1+f2+f3)/3.0);}void CStudent::Display(int y,CDC*pDC){CString str;str.Format("%s %s %f %f %f %f",strName,strID,fScore1,fScor2,fScore3,fAverage);pDC->TextOut(0,y,str);}IMPLEMENT_SERIAL(CStudent,CObject,1)void CStudent::Serialize(CArchive &ar){if(ar.IsStoring())ar<<strName<<strID<<fScore1<<fScore2<<fScore3<<fAverage;elsear>>strName>>strID>>fScore1>>fScore2>>fScore3>>fAverage;}5.添加并处理菜单项为CEx_StudentDoc类添加ID_STUREC_ADD的COMMAND消息映射,并在映射函数中添加下列代码:CAddDlg dlg;if(IDOK==dlg.DoModal()){//添加记录CStudent *pStudent=new CStudent(dlg.m_strName,dlg.m_strID,dlg.m_fScore1,dlg.m_fScore2,dlg.m_fScore3);m_stuObArray.Add(pStudent);SetModifiedFlag();//设置文档更改标志UpdateAllViews(NULL);//更新视图}6.在Ex_StudentDoc.cpp文件的开始处增加包含CAddDlg的头文件#include "AddDlg.h"7.完善代码(1)在Ex_StudentDoc.h文件中,添加下列成员变量和成员函数public:CObArray m_stuObArray;int GetAllRecNum(void);CStudent* GetStudentAt(int nIndex);(2)在Ex_StudentDoc.cpp文件中添加函数的实现代码:CStudent*CEx_StudentDoc::GetStudentAt(int nIndex){if((nIndex<0)||nIndex>m_stuObArray.GetUpperBound())return 0;return(CStudent*)m_stuObArray.GetAt(nIndex);}int CEx_StudentDoc::GetAllRecNum(){return m_stuObArray.GetSize();}(3)在CEx_StudentDoc析构函数中添加下列代码:int nIndex=GetAllRecNum();while(nIndex--)delete m_stuObArray.GetAt(nIndex);m_stuObArray.RemoveAll();(4)在Serialize函数中添加下列代码:void CEx_StudentDoc::Serialize(CArchive& ar){if (ar.IsStoring()){m_stuObArray.Serialize(ar);}else{m_stuObArray.Serialize(ar);}}(5)在OnDraw函数中添加代码:int y=0;for(int nIndex=0;nIndex<pDoc->GetAllRecNum();nIndex++) {pDoc->GetStudentAt(nIndex)->Display(y,pDC);y+=16;}(6)打开文档字串资源将其内容修改为编译运行后点击学生记录中的添加记录显示如下:而且生成一个文件8.在上述基础上修改代码(1)修改类Cstudent的声明:将void Display(int y,CDC*pDC);改为void Display(int nIndex,CListCtrl *pList); (2)修改Display成员函数的实现代码为:void CStudent::Display(int nIndex,CListCtrl *pList){ int nSub=pList->InsertItem(nIndex,strName);CString str;pList->SetItemText(nSub,1,strID);str.Format("%5.1f",fScore1);pList->SetItemText(nSub,2,strID);str.Format("%5.1f",fScore2);pList->SetItemText(nSub,3,strID);str.Format("%5.1f",fScore3);pList->SetItemText(nSub,4,str);}(3)修改OnStureAdd函数中的代码:将UpdateAllViews(NULL);//更新视图改为UpdateAllViews(NULL,1);//更新视图(4)在View类中添加一个成员函数DispAllRec,用于将文档中的记录数据全部显示在列表控件中,其代码如下:void CEx_StudentView::DispAllRec(){CEx_StudentDoc* pDoc=GetDocument();ASSERT_V ALID(pDoc);CListCtrl&m_ListCtrl=GetListCtrl();m_ListCtrl.DeleteAllItems();int y=0;for(int nIndex=0;nIndex<pDoc->GetAllRecNum();nIndex++){pDoc->GetStudentAt(nIndex)->Display(y,&m_ListCtrl);y++;}}(5)在CEx_StudentView::PreCreateWindow函数中添加下列代码:cs.style|=LVS_REPORT;(6)在OnInitialUpdate函数中添加设置列表控件表头的代码://删除列表头int nColumnCount=m_ListCtrl.GetHeaderCtrl()->GetItemCount();for(int i=0;i<nColumnCountli++)m_ListCtrl.DeleteColumn(0);//添加列表头CListCtrl& m_ListCtrl=GetListCtrl();char* arCols[5]={"姓名","学号","成绩1","成绩2","成绩3");for(int nCol=0;nCol<5;nCol++)m_ListCtrl.InsertColumn(nCol,arCols[nCol],LVCFMT_LEFT,100);m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);DispAllRec();(7)为View类添加OnUpdate消息函数,并添加下列代码;void CEx_StudentView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint){if(lHint==1) DispAllRec();}(8)删除刚才在Draw中添加的代码三.实验结果能通过对话框添加一个学生记录,还能显示在表格里面,最后记录内容保存到一个文件中四.实验心得本次试验中用到CListCtrl&m_ListCtrl=GetListCtrl();如果开始创建的单文档应用程序不是基于ClistView,此处就会报错,说GetListCtrl();没有定义,因为此函数是继承ClistView这个基类的。

相关文档
最新文档