VC程序设计 复习题Word格式.docx
- 文档编号:19422304
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:143
- 大小:89.31KB
VC程序设计 复习题Word格式.docx
《VC程序设计 复习题Word格式.docx》由会员分享,可在线阅读,更多相关《VC程序设计 复习题Word格式.docx(143页珍藏版)》请在冰豆网上搜索。
管理静态文本控件和图片控件的MFC类是Cstatic类,管理组框的是CButton类。
因此,组框又可以归类于(按钮)控件。
组框用来作为一组控件的外围边界,可以使一组控件关联在一起,它经常与一组单选按钮或一组复选框一起使用(注意是通常而不是必须)。
静态控件一般不能用于响应用户的输入,如要静态控件响应输入而发送消息,需要设置它的(Notify或通知)风格属性。
静态控件不能接收焦点。
编辑框经常和(静态文本控件)一起使用,用于数据的输入和输出。
通过是否勾选编辑框的(Multiline)属性设置编辑框是否允许多行输入。
若要编辑框作为密码输入窗口使用(即输入时显示*而不是对应的字符),需要设置编辑框的Password属性。
利用MFC提供的对话框数据校验DDV功能,编辑框能够校验用户的输入是否符合要求,即用户输入字符串的长度或输入数值的大小是否在规定的范围内。
在一组单选按钮中,(第一个)按钮的ID值可以用于在对话框中为控件建立关联的成员变量。
必须为同组的第一个单选按钮设置Group属性,而同组其他单选按钮不能再设置Group属性。
按钮控件只能发送通知码为BN_CLICKED(对应单击按钮事件)和BN_DOUBLECLICKED(对应双击按钮事件)的(WM_COMMAND)消息。
列表型控件包括列表框、组合框、列表视控件和树视控件等四种。
对用MFC类分别为ClistBox,CComboBox和ClistCtrl类。
列表框有Single(单选)、Multiple(多选)、Extended(扩展多选)和None(不选)四种风格。
列表框控件(ListBox)的默认风格为(单选),表示用户一次只能选择一个选项。
多选列表框允许用户在按下Shift或Ctrl键的同时利用鼠标选择多个选项。
扩展多选列表框除了具有多选列表框的功能外,还允许用户在按下Shift键的同时利用方向键选择多个选项,且可以通过鼠标拖拽来选择多个选项。
不选风格列表框控件表示用户不能选择列表中的任何选项。
组合框吸收了(列表框)和(编辑框)的优点,它既可以显示列表项共用户进行选择,也允许用户输入新的列表项。
实质上,组合框是(编辑框)、(列表框)和(按钮)的组合。
组合框有Simple(简单组合框)、Dropdown(下拉组合框)和DropList(下拉列表框)等三种形式。
在(Styles)属性页设置这三种形式。
简单组合框是一个列表框和一个编辑框的组合,列表框总是可见的,被选中的列表项显示在编辑框中。
下拉组合框除了含有列表框和编辑框,在编辑框旁边还有一个下拉按钮。
只有当用户单击下拉按钮时,列表框才显示出来。
下拉列表框除了用户不能在编辑框中进行输入操作外,其他功能与下拉组合框一样。
组合框的初始列表项在属性对话框的Data页面进行添加。
此时,每输入完一行之后,要用Ctrl+回车键才能换行输入下一项。
另外,也可在对话框类的OnInitDialog初始化成员函数中编写代码添加列表项。
滚动条的作用:
通过可视化的滚动操作实现程序设计所要求的功能,如滚动显示数据内容,在一个有效范围内选择合适的数值等。
MFC提供的滚动视图类为CScrollView,在应用程序向导中可以设置视图类的基类为CScrollView以支持滚动视图。
第8章
·
简述什么是Windows的图形设备接口?
Windows提供了一个称为图形设备接口GDI(GraphicsDeviceInterface)的抽象接口。
GDI作为Windows的重要组成部分,它负责管理用户绘图操作时功能的转换。
用户通过调用GDI函数与设备打交道,GDI通过不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了直接对硬件进行操作,从而实现所谓的设备无关性。
简述什么是绘图的设备无关性?
Windows如何实现设备无关性?
所谓设备无关性,是指操作系统屏蔽了硬件设备的差异,使用户编程时一般无需考虑设备的类型,如不同种类的显示器或打印机。
Windows提供了一个称为图形设备接口GDI(GraphicsDeviceInterface)的抽象接口,把不同设备提供的驱动程序将绘图语句转换为对应的绘图指令,避免了直接对硬件进行操作,从而实现所谓的设备无关性。
什么是设备环境?
设备环境也称设备描述表或设备上下文,它是由Windows管理的一个数据结构,它保存了绘图操作中一些共同需要设置的信息,如当前的画笔、画刷、字体和位图等图形对象及其属性,以及颜色和背景等影响图形输出的绘图模式。
什么是使用GDI绘图的首要条件?
使用GDI绘图时,必须先获取一个(设备环境),应用程序每次绘图操作均按照设备环境中设置的绘图属性进行。
这些属性包括当前的画笔、画刷、字体和位图等图形对象及其属性,以及也女色和北京等影响图形输出的绘图模式。
客户区是指程序窗口中不包括(边框)、(标题栏)、(菜单栏)、(工具栏)和(状态栏)等界面元素的内部绘图区。
MFC中用CClientDC类代表(客户区设备环境)。
MFC编程时,如何获取和释放设备环境DC?
采用MFC方法编程时,MFC提供了不同类型的DC类,每一个类都封装了DC句柄,并且它们的构造函数自动调用获取DC的API函数,析构函数自动调用释放DC的API函数。
因此,在程序中通过声明一个MFC设备环境类的对象就自动获取了一个DC,而当该对象被销毁时就自动释放了获取的DC。
MFCAppWizard应用程序向导创建的OnDraw()函数自动支持所获取的DC。
(CDC)类是其它MFC设备环境类的基类。
(CpaintDC)类是OnPaint()函数使用的设备环境类。
当在客户区实时绘图时,需要利用MFC的(CClientDC)类来定义一个客户区设备环境。
(CwindowDC)类代表了整个程序窗口设备环境,可以在整个窗口区域绘图。
GDI的文本和图形输出函数使用(逻辑坐标),而在客户区移动或按下鼠标的鼠标位置是采用(设备坐标)。
(设备坐标系)是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。
设备坐标系的原点位置(0,0)不限定在设备显示区域的左上角。
(判断题)
逻辑坐标系是面向(DC或设备环境)的坐标系,这种坐标不考虑具体的设备类型。
设备坐标系分为(屏幕坐标系)、(窗口坐标系)和(客户区坐标系)三种相互独立的坐标系,分别以(屏幕左上角)、(应用程序窗口左上角)和(窗口客户区左上角)作为坐标原点。
(顺序要对)
鼠标消息的坐标参数使用客户区坐标的(设备坐标系)。
CDC类绘图成员函数使用与客户区坐标对应的(逻辑坐标系)。
Windows提供了(RGB)宏用于设置颜色,将其中的(红)、(绿)、(蓝)分量值转换为COLORREF类型的颜色数据。
(注意顺序!
)
CDC的成员函数CDC:
:
SetBkColor()用来(设置背景色),而成员函数CDC:
SetTextColor()则用来(设置文本颜色)。
(画笔)用于绘制点、线、矩形和椭圆等几何图形,(画刷)用指定的颜色和图案来填充绘图区域。
对应的MFC类分别为(CPen)和(CBrush)。
什么是GDI对象?
具体包括那些对象?
GDI对象是Windows图形设备接口的抽象绘图工具,程序通过这些GDI对象设置绘图的工具和风格。
除了画笔和画刷,其它GDI对象还包括字体、位图和调色板。
MFC中是如何对GDI对象进行封装的?
MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类(后者继承自CObject)。
GDI对象的使用一般步骤如何?
GDI对象的使用一般步骤为:
创建封装GDI对象的MFC对象,通过SelectObject函数把该GDI对象选入当前的设备环境DC;
使用设备环境类的成员函数进行绘图;
把自定义deGDI对象选出设备环境并恢复以前的设备环境;
销毁GDI对象。
Windows预定义了一些简单风格的GDI对象,用户使用这些GDI对象时,无需创建便可直接将其选入当前的设备环境。
这些GDI对象称作为堆(Stock)对象。
堆对象包括(堆画笔)、(堆画刷)和(堆字体)等。
类CDC提供的单行文本输出成员函数是(TextOut)。
而要绘制多行文本可以调用(DrawText)函数。
Windows支持(光栅字体)、(矢量字体)和(TrueType)三种字体。
编程时我们可以通过访问(TEXTMETRIC)结构来获取显示器关于文本字符的属性信息(如字体高度宽度等)。
MFC提供的公共字体对话框对应的类为CFontDialog。
编程时通过该对话框获得字体信息,从而利用这些信息利用函数(CreateFontIndirect)来创建对应的字体。
Windows支持两种不同形式的位图中,DDB是(设备相关位图),DIB是(设备无关位图)。
DIB位图通常以(BMP)文件形式保存在磁盘中。
MFC只提供了处理(DDB)位图的类CBitmap,对于DIB位图要先用其成员函数(LoadBitmap)转换为(DDB)位图。
编程时利用CDC的成员函数(BitBlt)或(StretchBlt)将位图从内存设备环境中复制到指定设备如显示器上进行显示。
应用程序图标通常会出现在(程序标题栏的左上角)、(Windows底部的任务栏)、(资源管理器窗口)和(Windows桌面)上。
图标大小尺寸有三种,一种是用于标题栏和最小化时的(16×
16)图标,另外两种是用于桌面、资源管理器的(32×
32)和(48×
48)图标。
对于图标,MFC没有提供对应的类,编程时只有采用句柄的方式使用一个图标。
利用CWinApp的(LoadIcon)成员函数载入图标资源。
用CDC类的(DrawIcon)成员函数绘制和显示图标。
在(InitInstance)初始化成员函数中可以通过调用成员函数CWnd:
SetIcon()安装图标。
光标是一种特殊的、可移动的32×
32点阵图形,它是用来作为(鼠标指针)的图形标志。
通过调用(LoadCursor)加载光标。
加载成功后,调用函数(SetCursor)设置光标。
使用Windows系统提供的光标,要调用CWinApp的成员函数(LoadStandardCursor)。
第5章
在Windows的MFC中采用(文档/视图)结构来统一和简化数据的处理,此结构是MFC应用程序的核心。
文档是MFC应用程序处理的(数据)的集合,包括文本、图形、图像和表格等类型。
一个文档对应于(用户当前打开的一个文件)。
文档的主要作用是把(数据处理)从(用户界面)的管理中分离出来,集中处理数据,同时提供与(视图)交互的接口。
视图是(文档)在应用程序窗口中的一个映像。
视图是(文档)与(用户)之间的媒介。
应用程序通过(视图)向用户显示(文档中的数据),并把用户的输入解释为对(文档)的操作。
一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互。
当用户打开一个文档时,应用程序就会创建一个与之相关联的视图。
视图是一个不能完全独立的没有边框的窗口,必须依附在一个框架窗口内。
〔问答〕在MFC应用程序框架的基础上,程序员要做的一般工作是:
在文档类中假如数据成员,简历自己的菜单并为菜单添加消息处理函数,在视图类中编写成员函数用户实现文档的显示和修改。
采用文档/视图结构的最大优点是:
把Windows程序通常要做的工作分成若干个定义好的类,这样有利于程序的模块化,程序也易于扩展,编程时只需修改所涉及的类。
文档/视图结构并未限定所有的数据都在文档类中定义,视图类也可以有自己的数据。
有时候这样做也会方便编程并提高程序效率。
一个视图对象有且只有一个与之相关联的文档对象。
视图对象通过调用(GetDocument)成员函数来获得与视图关联的文档对象的指针,从而访问文档类的公有公有成员。
当一个文档的数据通过某个视图被修改后,与它相关联的每个视图都必须对修改作出反应。
这是通过调用文档类的成员函数(UpdateAllViews)来实现的。
当调用文档类的UpdateAllViews成员函数时,实际上是调用了所有相关视图的成员函数(OnUpdate),以实现相关视图的更新。
视图类的OnUpdate成员函数功过调用窗口类的成员函数(Invalidate)来刷新整个客户区。
多文档应用程序有(一个)主窗口,但在主窗口中可以同时打开(多个子窗口)。
每个子窗口对应(一个不同的文档)。
MDI程序的主框架窗口不包含视图,分别有每个子框架窗口包含一个视图。
因此,MDI的主框架窗口类不与某个打开的文档相关联,而只与(子框架窗口)相关联。
什么是文档模板?
在文档/视图结构应用程序中,数据以文档类的对象的形式存在。
文档对象通过视图对象显示出来,而视图对象又是框架窗口的一个子窗口,并且涉及文档操作的菜单和工具栏等资源也是建立在框架窗口上。
这样,文档、视图、框架和所涉及的资源形成了一个固定的关系,折衷固定的关系就称为文档模板。
也就是说,文档模板描述了对应于每一种类型文档的视图和窗口的类型。
在应用程序初始化时,必须首先注册(文档模板),以便程序利用其来完成(框架窗口)、(视图对象)、(文档对象)的创建和(资源)的装入。
(RUNTIME_CLASS)宏可以用来获得程序以不指定明确的对象名的方式动态创建的类的对象的指针。
应用程序可以有菜单,也可以没有菜单。
菜单的实质是一系列(命令)的封装,每个菜单项在执行时发送携带(该菜单项ID标识)的WM_COMMAND消息,由程序员为其添加消息处理函数。
UPDATE_COMMAND_UI消息又称为(更新用户界面命令)消息,可以使程序员根据当前程序运行状态动态设置菜单项的显示。
菜单命令不能同时映射到框架窗口类、视图类和文档类。
但是如果这样做程序也不会报错,而会按照视图类、文档类、框架窗口类这样的优先级顺序来处理。
优先级最高的处理才是有效的,会被执行。
文档类的对象也可以处理菜单命令消息,但是不能处理其他类型的消息。
要使多个菜单命令(含工具栏按钮)映射到同一个成员函数上,只需要将不同命令的ID值(设置为同一个值)。
菜单分为两类,分别是(停靠式菜单)和(弹出式菜单)。
可以通过CMenu类的成员函数(LoadMenu)来载入先前创建好的菜单资源,从而建立一个(弹出式)菜单。
其显示要调用CMenu类的(TrackPopupMenu)成员函数。
用户操作鼠标时产生的消息主要包括:
WM_MOVE(移动鼠标),WM_LBUTTONDOWN(按下左键),WM_LBUTTONUP(释放左键),WM_RBUTTONDOWN(按下右键),WM_RBUTTONUP(释放右键),WM_LBUTTONDBLCLK(双击左键)。
用鼠标绘图的时候用CWnd的成员函数(SetCapture)捕获鼠标,结束画图后调用(ReleaseCaptuer)来释放鼠标。
工具类结合了菜单和(快捷键)的优点,以形象化的位图图形的方式来表示应用程序的操作命令。
工具类按钮一般都与菜单命令项对应,只需让按钮的ID值跟对应菜单命令的ID值(相同)即可在按钮上点击鼠标左键时执行与相应的菜单项被选中时执行的同样的命令。
状态栏显示的内容由MainFrm.cpp中定义的静态数组(indicators,注意都是小写)决定。
需要在状态栏上显示的各指示器的标识以及标识的个数也由该数组决定。
(持久性)是指对象所具有的保存和加载其状态的能力。
即对象能够在程序运行结束前将对象的当前状态写入永久性存储体内,以后在程序再运行时通过数据的读取而恢复对象的状态。
这种对象的保存和恢复的过程称为(序列化)。
MFC应用程序文档的序列化是在文档类的成员函数(Serialize)中进行的。
存储文档数据时,序列化主要通过(CArchive)类的对象把数据存入与之相关联的文件中。
可序列化的类必须直接或简介的从(CObject)类派生而来,而且要有一个(不带参数的)构造函数。
在退出程序时,程序一般需要提示用户是否保存当前文档,这是通过在修改文档后调用文档类的成员函数(SetModifiedFlag)设置修改标识来实现的。
第4章
Windows应用程序以(窗口)的形式出现,内部采用(消息处理)机制。
VC6中,创建一个应用程序,首先要创建一个(项目),并由它生成应用程序。
VC6中,采用向导(MFCAppWizard[exe])来创建基于MFC的应用程序。
单文档界面应用程序运行后出现的Windows界面由(框架)(包括(菜单栏)、(工具栏)和(状态栏))和(用户区)组成。
并且程序运行后一次只能打开(一个)文档。
想在同一个目录下重新创建一个同名的项目,必须首先将原来的项目从(项目工作区)删除或移走。
类向导(ClassWizard)用快捷键(Ctrl+W)唤出。
VC6创建的文件类型(扩展名):
.dsw文件是(工作区文件),.dsp文件是(项目文件),.h文件是(C++头文件),存储类的(定义代码),.cpp文件是(C++源文件),存储类的(成员函数的实现代码)。
Windows编程的一个主要特点是(资源)和(代码)的分离,可以方便进行软件的本地化。
类向导的作用如何?
用于定制现有的类和建立新的类,如把消息映射为类的成员函数,把一个控件与类的成员变量关联起来,删除消息映射函数等。
程序调试分为(源程序语法错误的修改)和(程序逻辑设计错误的修改)两个阶段。
编译器只能找出(语法)错误,程序逻辑设计上的错误只能靠程序员通过(调试)来检查和修改。
Release版本的应用程序不能用于程序调试,但具有优化功能。
VC6中进行调试时常采用的快捷键功能为:
F5-(启动调试),F9-(设置断点),F10-(单步执行)。
VC6中调试时通过(Watch)窗口和(Variable)窗口观察变量和表达式的值。
C++部分(书上没讲过的部分不考)
C++程序设计模拟试卷
(一)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中
只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无
分。
1.编写C++程序一般需经过的几个步骤依次是()
A.编辑、调试、编译、连接
B.编辑、编译、连接、运行
C.编译、调试、编辑、连接
D.编译、编辑、连接、运行
答案:
B
解析:
经过编辑、编译、连接和运行四个步骤。
编辑是将C++源程序输入计算机的过程,保
存文件名为cpp。
编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为
obj,由于没有得到系统分配的绝对地址,还不能直接运行。
连接是将目标文件obj转换为可执行
程序的过程,结果为exe。
运行是执行exe,在屏幕上显示结果的过程。
2.决定C++语言中函数的返回值类型的是()
A.return语句中的表达式类型
B.调用该函数时系统随机产生的类型
C.调用该函数时的主调用函数类型
D.在定义该函数时所指定的数据类型
D
函数的返回值类型由定义函数时的指定的数据类型决定的。
A项的表达式的值要转换
成函数的定义时的返回类型。
3.下面叙述不正确的是()
A.派生类一般都用公有派生
B.对基类成员的访问必须是无二义性的
C.赋值兼容规则也适用于多重继承的组合
D.基类的公有成员在派生类中仍然是公有的
继承方式有三种:
公有、私有和保护。
多继承中,多个基类具有同名成员,在它们
的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。
赋值兼容规则是指
派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。
基类中的
公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
4.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体
也就是()
A.类
B.对象
C.函数体
D.数据块
A
类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。
5.在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中
的()
A.私有成员
B.公有成员
C.保护成员
D.保护成员或私有成员
在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类
的成员函数来访问。
所以选择A项。
6.对基类和派生类的关系描述中,错误的是()
A.派生类是基类的具体化
B.基类继承了派生类的属性
C.派生类是基类定义的延续
D.派生类是基类的特殊化
派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基
类的具体化和特殊化,派生类是对基类扩展。
B项基类不能继承派生类成员,所以错误。
7.关于this指针使用说法正确的是()
A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
B.保证基类私有成员在子类中可以被访问。
C.保证基类保护成员在子类中可以被访问。
D.保证基类公有成员在子类中可以被访问。
this指针是隐藏的,可以使用该指针来访问调用对象中的数据。
基类的成员在派生
类中能否访问,与继承方式有关,与this没有关系。
8.所谓多态性是指()
A.不同的对象调用不同名称的函数
B.不同的对象调用相同名称的函数
C.一个对象调用不同名称的函数
D.一个对象调用不同名称的对象
答
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC程序设计 复习题 VC 程序设计