C++:面向对象程序设计第九章 单文档界面和多文档界面
C_Winform程序设计1Windows窗体介绍

创建窗体 为窗体添加控件 创建继承窗体 组织窗体上的控件 窗体的用途:自定义窗口 窗体的用途:创建多文档界面应用程序
Windows 窗体和 Web 窗体
创建窗体 设置窗体属性 窗体生命周期 处理窗体事件 Windows 窗体设计器生成的代码
特点
部署 图形
平台 编程模型 安全性
在其代码访问安全性实现中使用 通过验证请求者的凭据, 粒度权限,以保护计算机资源和 按URL控制获得访问Web应用 敏感信息 程序资源的授权
创建一个新的项目的同 时也创建了一个窗体
创建一个新窗体
1.
在解决方案资源管理 器中右键点击 “项 目”
单击“添加” 单击“添加Windows 窗体”
Windows窗体
可不必改注册表运行 GDI+
Web窗体
不需要下载和安装 交互或动态图形的更新需 要往返于服务器
响应
为需要交互的应用程序提供最快 可以利用浏览器的动态 的响应速度 HTML(DHTML)功能来创建丰 富的用户界面(UI)
要求在客户计算机上运行 .NET Framework 基于客户端Win32消息模式 只需浏览器 通过HTTP调用应用程序组 件
SDI
MDI
只有一个文档是可见的 打开一个文档之前,你必须关 闭另一个
同时显示多个文档 每个文档显示在它自己的窗口 中
• 创建一个父窗体
– 创建一个新项目 – 设置IsMdiContainer属性为True – 添加一个菜单项,来触发子窗体
• 创建一个子窗体
– 向项目添加一个新的窗体
• 从父窗体调用子窗体
2. 3.
窗体名:项目中窗体的名称
第八章 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库来处理。
等级考试chap7_等级考试辅导题

等级考试辅导题一.选择题1.在VFP中,若把表单设置为子表单,应设置的属性即属性值为A.设置ShowWindow属性值为2B.设置ShowWindow属性值为0或1,设置Desktop属性值为.F.C.设置ShowWindow属性值为0或1,设置Desktop属性值为.T.D.设置ShowWindow属性值为2,设置Desktop属性值为.T.2.在运行表单时,下列有关表单事件的引发次序正确的是A.Destroy—Init—Load B. Destroy—Load—InitC. Init—Destroy—LoadD. Load—Init—Destroy3.在下列几组VFP基类中,均具有ControlSource属性的是A. ListBox、Label、OptionButtonB. ComboBox、EditBox、GridC. ComboBox、Grid、TimerD. EditBox、CheckBox、OptionButton4.下列表单的哪个属性设置为真时,表单运行时将自动居中A.AutoCenter B.AlwaysOnTop C.ShowCenter D.FormCenter5.下列控件中,在运行时一定不可见。
A.OptionButton B.Page C.OptionGroup D.Timer6.当用鼠标单击正在运行的表单中一个未被禁用的文本框对象时,文本框发生的三个事件的顺序为。
A.GotFocus—When—Click B. When—GotFocus—ClickC. Click—GotFocus—WhenD. Click—When—GotFocus7.如果ComboBox对象的RowSourceType设置为6,以一个表的字段为行数据源,则_____ A)在数据环境中添加此表,运行时用户从下拉列表中选择数据,将移动此表的记录指针B)在数据环境中添加此表,运行时可使用AddItem方法,对列表增加新项C)在数据环境中不必添加此表,ComboBox会找到表文件D)下拉列表不能使用多列方式8.如果ListBox对象的RowSourceType设置为3,则在RowSource属性中写入的SELECT语句,通常包含_____子句A) GROUP BY B)ORDER BY C)INTO TABLE D)INTO CURSOR9.如果要在列表框中一次选择多个项(行),必须设置_____属性为.t.A)MultiSelect B)ListItem C)Controlsv D)Enabled10.确定列表框内的某个条目是否被选定以及确定第几列数据和Value属性进行绑定,应使用的属性是_______A)selected ColumnCount B)selected BoundColumnC)list ColumnCount D)list BoundColumn11.如果表单中有一命令按钮组,命令按纽组包含若干命令按纽,现设定了命令按纽组的Click事件代码,但没有设定命令按纽的Click事件代码。
C 面向对象程序设计(2010年清华大学出版社出版的图书)

第1章计算机和C++编程入门 概述 1.1计算机系统 1.2编程和问题求解 1.3 C++入门 1.4测试和调试 小结 自测题答案 编程项目 第2章 C++基础知识 概述
图书五
内容简介
图书目录
《C++面向对象程序设计》从实际应用出发,系统地介绍C++面向对象程序设计的原理、方法和技巧。重点突 出,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的 特征,又能掌握C++语言的编程与应用。全书共8章,主要包括:面向对象程序设计语言概述、C++语言基础知识、 类和对象、对象成员和友员、继承和派生、多态性和运算符重载、模板、C++的输入/输出流。在每一章的知识点 后面,都给出了相应的程序设计实例,这些实例不仅有助于读者巩固知识点的内容,而且更有助于读者创新能力 的培养。
图书一
内容提要
目录
C++面向对象程序设计本书介绍了C++面向对象程序设计的基本知识和编程方法,以及C++面向对象的基本特征。 针对初学者的特点,本书力求通过大量实例、习题和上机实验题,以通俗易懂的语言讲解复杂的概念和方法,使读 者能深刻理解和领会面向对象程序设计的特点和风格,掌握其方法和要领,以期帮助读者尽快地迈入面向对象程 序设计的大门。
Savitch教授的研究领域包括复杂性理论、形式语言理论、计算语言学和计算机教材的开发。他因为对复杂 性理论所做的贡献而声名远扬,其中包括他提出的第一个完整语言(complete1anguage)范例。这个奠基性的
VB程序设计教程课后参考答案概要

VB程序设计教程课后参考答案习题一一、填空题1.对象、事件驱动2.窗体、控件3.属性4.属性窗口、编程设置5.事件过程6.对象名、下划线、事件名7.Form_click8.Print form1.print “我的VB”9.主窗口、属性、工具箱、代码、窗体、工程资源管理10.菜单、快捷键二、选择题1.C 2. A 3. B 4. B 5. D 6. B C 7. A 三、简答题(略)习题二一、选择题1. D2. C3. C4. B5. C6. B7. C8. B 9. A 10. B 11. B 12. C 13. D 14. B15. A 16. A 17. A 18. A 19. B 20. C 21. A22. B 23. B 24. A 25. C 26. A 27. B 28. B29. C 30. B 31. D 32. D 33. C二、填空题1.Controlbox、Maxbutton、Minbutton2.Multiline TRUE3.******4.单文档界面(SDI)多文档界面(MDI)5.窗体显示6.Passwordchar7._change()三、编程题(略)习题三一、基础知识题(略)二、填空题1.整型、长整型、单精度、双精度2.(x mod 10)*10+x\103.Sin(3.14*15/180)+sqr(x+exp(3))/abs(x-y)-log(3*x)4.(a+b)/(1/(c+5)-c*d/2)5.X mod 5=0 or x mod 9=06.False7.-4、3、-3、3、-4、48.CDEF10.TRUE11.变量、属性12.‘_ :13.(略)14.“”#15.Public、通用/模块、Dim、static、private16.+ 、&、+17.Now() 、time()、日期18.Inputbox()、字符串、val()19.Msgbox()三、选择题1.B 2. C 3. A 4. B D此题有误 5. B 6. A7. D 8. B 9. B 10. C 11. D 12. B13. C 14. B 15. A 16. C 17.A 18. D19. A 20. D 21. A 22. C 23. C 24. D25. A 26. D 27. D 28. B 29. C 30. B31. C 32. B 33. C D此题有误34. C 35. A36. D 37. C 38. A 39. B 40. A 41. C42. C 43. D 44. C 45. D 46. A四、编程题1.Option ExplicitPrivate Sub Command1_Click()Dim a%, b%, c%, delta%Dim x1#, x2#, x#a = Val(InputBox("please input data to a:", "info", 1))b = Val(InputBox("please input data to b:", "info", 1))c = Val(InputBox("please input data to c:", "info", 1))If a = 0 And b <> 0 Thenx = -c / bPrint "所构成的方程是:" & b & "x" & "+" & c & "=0"Print "该一元一次方程的根是:", xEnd IfIf a = 0 And b = 0 ThenPrint "很抱歉,不能构成合法的方程!"End IfIf a <> 0 Thendelta = b * b - 4 * a * cIf delta >= 0 Thenx1 = (-b + Sqr(delta)) / (2 * a)x2 = (-b - Sqr(delta)) / (2 * a)Print "所构成的方程是:" & a & "x2" & "+" & b & "x" & "+" & c & "=0"Print "该方程的根是:"Print "第一个根是:", x1Print "第二个根是:", x2Else2Print "该方程有两个虚根:"Print "第一个虚根是:" & -b / (2 * a) & "+" & Sqr(Abs(delta)) / (2 * a) & "i"Print "第二个虚根是:" & -b / (2 * a) & "-" & Sqr(Abs(delta)) / (2 * a) & "i" End IfEnd IfEnd Sub2.Option ExplicitPrivate Sub Command1_Click()Dim i%, s%s = 0For i = 1 To 99 Step 2s = s + iNextPrint sEnd Sub3.Option ExplicitPrivate Sub Command1_Click()Dim i%Dim s#s = 0For i = 1 To 100s = s + 1 / i * (-1) ^ (i + 1)NextPrint sEnd Sub4.Option ExplicitPrivate Sub Command1_Click()Dim i%, n%Dim t#, s#n = Val(InputBox("please input data:", "info", 5))s = 0t = 1For i = 1 To nt = t * is = s + tNextPrint sEnd Sub5.Option ExplicitPrivate Sub Command1_Click()Dim a%, b%, c%Dim p#, s#a = Val(InputBox("please input data to a:", "info", 3))b = Val(InputBox("please input data to b:", "info", 4))c = Val(InputBox("please input data to c:", "info", 5))If (a + b > c And Abs(a - b) < c) Or (a + c > b And Abs(a - c) < b) Or ((b + c) > a And Abs(b - c) < a) Thenp = (a + b + c) / 2s = Sqr(p * (p - a) * (p - b) * (p - c))Print "三角形的面积是:" & sElsePrint "很抱歉,不能构成合法的△三角形!"End IfEnd Sub6.Option ExplicitPrivate Sub Command1_Click()Dim ji%, tu%For ji = 1 To 27For tu = 1 To 27If ji * 2 + tu * 4 = 78 And ji + tu = 27 ThenPrint "鸡的个数是:" & jiPrint "兔的个数是:" & tuEnd IfNextNextEnd Sub7.Option ExplicitPrivate Sub Command1_Click()Dim i%Dim s#, t#s = 10t = 10For i = 1 To 7t = t * 0.4s = s + t * 2NextEnd Sub8.Option ExplicitPrivate Sub Command1_Click()Dim i%, fs%, max%, min%, s%Dim ave#fs = Val(InputBox("please input score:", "info", 90))s = fsmax = fsmin = fsFor i = 2 To 7fs = Val(InputBox("please input score:", "info", 90))If max < fs Thenmax = fsEnd IfIf min > fs Thenmin = fsEnd Ifs = s + fsNextave = (s - max - min) / 5Print "该运动员的平均成绩是:" & aveEnd Sub9. ‘同学们,这道题方法很多,主要考察你对选择结构的理解,我给出其中一种方法。
计算机图形学 使用VC开发绘图程序的基本方法

七、思考题(尽量做,计入成绩) :
1、为什么要用 CDC 定义一个对象来作图? Windows 使用与设备无关的图形设备环境进行显示 。MFC 基础类库定义了设备环境对象类----CDC 类。 因为使用的是 mfc,如果是 sdk 的话就得用 dc,这个 cdc 想当是一个给设备画画的笔。 2、如果要绘制多条直线,应该如何编程?
4、 VC 中编程环境中,工程(project)是什么意义?为什么要用 project 的方式管理代码?
Project 文件的扩展名是 dsp,这个文件中存放的是一个特定的工程,也就是特定的应用程序的有关信息, 每个工程都对应有一个 dsp 类型的文件。 clw 为扩展名的文件是用来存放应用程序中用到的类和资源的信 以 息的,这些信息是 VC 中的 ClassWizard 工具管理和使用类的信息来源。 因为用 project 的方式管理代码比较方便,可以看成是在一个文件夹下进行的。
3、 在 MyView.cpp 文件的 OnDraw 函数中加入如下代码。 pDC->MoveTo(100,100); pDC->LineTo(200,200); CPen *pOldPen; CPen dashPen; dashPen.CreatePen(PS_DASH,1,RGB(255,0,0)); pOldPen = pDC->SelectObject(&dashPen); pDC->LineTo(300,100); pDC->SelectObject(pOldPen); pDC->LineTo(400,200);
实验(No. 1
)题目:使用 VC 开发绘图程序的基本方法
实验目的及要求:
一、实验目的:
编写一个具有一定功能的 MFC 类库应用程序 (引入简单的视图/文档概念) 掌握 GDI 画图的基本方法, , 并调用系统函数画直线。
第九章多文档界面(MDI)

PS_INSIDEFRAME 在一个封闭形状的框架内画线,若设定的颜 色不能在调色板种找到且线宽大于1,Windows会使用一种混色。 PS_NULL 空的画笔,什么也不画
9.1多文档界面窗口
MDI 框架窗口为层叠、平铺、排列子窗口和新建子窗口等一些 标准窗口操作提供了缺省的菜单响应。 在响应新建子窗口命令时,框架调用 CDocTemplate::CreateNewFrame() 为当前活动文档创建一个子窗口。 CreateNewFrame() 不仅创建子窗口,还创建与文档相对应的视 图。 下面,我们结合一个绘图程序例子,介绍多文档界面技术。 在此之前,我们首先要介绍一下如何在Windows 中绘图以及 Windows 的图形设备接口(GDI )。
CClientDC(客户区设备上下文)用于客户区的输出,它在构造 函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。 一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图) 绘图)时要用到它。
用法是:
CClientDC dc(this); //this一般指向本窗口或当前活动视图
9.2 图形设备接口(GDI)
光栅输出 光栅图形的输出是指光栅图形函数对以位图形式存储的数据进行 操作,它包括各种位图和图标的输出。 在屏幕上表现为对若干行和列的像素的操作,在打印机上则是若 干行和列的点阵的输出。 光栅图形输出的优点是速度很快,它是直接从内存到显存的拷贝 操作。 缺点是需要额外的内存空间。 Windows在绘制界面时使用了大量的光栅输出。
第11章单文档与多文档

中(而不是从存储介质 这一点与Windows消息
中)将文档中的数据取 和控件通知消息不同,
出来,然后在屏幕上 因为Windows消息和控
显示文档的数据
件通知消息就只4能被 窗口和视图处理。
文档/视图结构的工作机制
视图通过GetDocument 成员函数获得指向相关 联的文档对象的指针
通过该指针调用文 档类的成员函数来 从文档中读取数据
无论是保存文档或是打开文档,应用程序都是通过 调用文档类的Serialize串行化成员函数来完成操作的。 因此,在大多数情况下,我们都需要重载Serialize成员 函数。Serialize成员函数带有一个CArchive类型的参数, 这是一个与所打开的文件相关联的对象。一般情况下, 总是使用CArchive对象来保存和打开文档。
由于每一个文档可以有多个视图,但 每个视图只能对应于一个确定的文档
多文档程序需要解决的问题仅仅是多 个文档的数据管理方法的问题
多文档程序,最初的文档模板只支持主窗口,但每次打开一 个新文档时都调用CDocument的函数OnNewDocument,建 立一个由CMDIChildWnd派生的新的MDI子窗口,这些窗口 中保存着各种已打开的文档,所有的细节都由MFC库处理 3
建的。
每一种文档类型都有一种文档模板与之相对应,文档模
板负责创建和管理该文档类型的所有文档。
文档模板的构造函数的原型如下:
CDocTemplate
(UINT nIDResource, //与文档一同使用的各种资源的资源标识符 CRuntimeClass* pDocClass,// 指向文档派生文档类的对象的指针 CRuntimeClass* pFrameClass, //框架类的派生框架类的对象指针 CRuntimeClass* pViewClass //指向CView的派生视图类的对象指针
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FIQ IRQ
0x14
0x10 0x0C 0x08 0x04 0x00
(Reserved) Data Abort
Prefetch Abort
Software Interrupt Undefined Instruction
3
MFC 编程
Reset
2015-3-14
ARM Vector Table 主讲教师:四川大学计算机学院
2015-3-14
C++:
单文档界面与多文档界面
高 级 • 单文档界面:单文档应用程序执行时,在同一时刻只 语 能打开一个窗口,每次只能打开一个文档,只有将当 言 前处理的文档存盘后,才能调入其它文件。 程 序 设 • 多文档界面:在Visual C++ 6.0中,多文档界面应用 计
II
程序在执行时可同时打开多个窗口,每个窗口中都可 打开一个文档。
• 2.文档的主要作用是什么? • 3.视图的主要作用是什么?
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程
2015-3-14
主讲教师:四川大学计算机学院 ***
10
C++: :
文档和视图的关系
• 文档用于数据处理和维护,而视图则用于数据 的显示,在文档/视图结构的应用程序编程中, 主要的工作就是用代码操作文档对象与视图对 象。
高 级 语 言 程 序 设 计 II
• 在关于文档对象与视图对象的代码中一般要调 用方法Cview::GetDocument(),通过 GetDocument()可以返回指向联系的视图对象, 四 一般地,当视图为人机交互界面时,如果用户 川 在视图中对文档数据进行编辑,视图将接收到 大 此消息,再发送消息通知文档对象更新文档数 学 据,这时可用GetDocument()得到被操作的文 精 品 档对象。 课
• 视图对象:显示文档数据以及接受用户 的输入和编辑,视图对象的一个非常 重要的成员函数是OnDraw()函数,每 当窗口需要重画时就将调用此函数, MFC的视图类由Cview类所派生。
主讲教师:四川大学计算机学院 ***
5
四 川 大 学 精 品 课 程
2015-3-14
II
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
C++: :
习题
• 课后习题、作业
• 习题1
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程
2015-3-14
主讲教师:四川大学计算机学院 ***
8
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
C++:
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程
1
主讲教师: *** 个人主页:***
:
2015-3-14
主讲教师:四川大学计算机学院 ***
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
四 川 大 学 精 品 课 程
***
4
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
C++: :
文档对象和视图对象
•
高 级 文档对象:文档对象用于存储程序数据,语 在应用程序中,要使数据存放到文档 言 对象中,就应将存储的数据作为文档 程 序 对象的成员变量。MFC的文档类由 设 计 Cdocument类所派生。
程
主讲教师:四川大学计算机学院 ***
6
2015-3-14
面 向 对 象 程 序 设 计
主 四 编 川 李 • 用AppWizard生成单文档应用程序时,派生出文档类、 大 涛 视图类、主窗口类和应用程序类。生成多文档应用程 学 高 序,它有一个主窗口和嵌在该窗口中的子窗口,具有 精 教 CChildFrame类,每个窗口可以使用不同的文档模板。品 出 课 版 程 社 主讲教师:四川大学计算机学院 *** 7 :
C++: :
测试题
• http://211.83.120.3在线测试
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程
2015-3-14
主讲教师:四川大学计算机学院 ***
9
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
C++: :
习题
• 1.MFC中文档和视图的关系是什么?
C++:
教材:《C++面向对象程序设计》
李涛 主编 游洪跃 陈良银 李琳等编 高等教育出版社
2006年2月出版
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程
:
2015-3-14
主讲教师:四川大学计算机学院 ***
2
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
:
2015-3-14
主讲教师:四川大学计算机学院 ***
提纲
面 向 对 象 程 序 设 计 主 编 李 涛 高 教 出 版 社
C++: :
第9章 单文档界面和多文档界面
1
Windows 程序运行机制
高 级 语 言 程 序 设 计 II
2
0x1C 0x18
Windows API 编程
C++:
本书内容
第1 章 第2章 第3章 第4 章 第5章 第6章 第7章 第8章 第9 章 第10章 实验 绪论 C++类和对象 继承 多态性 模板 C++常见问题 Visual C++编程基础 对话框、常用消息、菜单和工具条 单文档界面和多文档界面 图形设备接口 (待安排)
3
高 级 语 言 程 序 设 计 II 四 川 大 学 精 品 课 程