VC-MFC试题复习题及答案
VC期末考试题及标准答案
武汉大学2021—2021学年上学期面向对象程序设计试卷〔B〕学号:姓名:院系:专业:得分:一、名词解释〔每题5分,共计25分〕〔1〕构造函数:是一种特殊成员函数,它提供了对成员变量进展初始化方法,使得在声明对象时能自动初始化对象〔+2〕;构造函数名称与类名一样〔+1〕;构造函数不能指定任何返回值类型〔+1〕;构造函数可以重载〔+1〕。
〔2〕多态:多态性是面向对象编程一个重要特征〔+1〕,主要表现在函数调用时实现“一种接口,多种方法〞〔+2〕。
多态又分为编译时多态和运行时多态两种〔+2〕。
〔3〕抽象类:抽象类是指这样类,它一些行为〔成员函数〕不给出具体定义〔+2〕,抽象类至少带有一个纯虚函数〔+1〕,抽象类不能用来申明对象,只能作为基类使用,因此它又称为抽象基类〔+2〕。
〔4〕文档模板:在文档/视图构造应用程序中,数据以文档类对象形式存在〔+1〕。
文档对象通过视图对象显示出来,而视图大对象又是框架窗口一个子窗口,并且涉及文档操作菜单和工具栏等资源也是建立在框架窗口上〔+2〕。
这样文档、视图、框架和所涉及资源形成了一种固定关系,这种固定关系就成为文档模板〔+1〕。
也就是说,文档模板描述了对应于每一种类型文档视图和窗口类型〔+1〕。
〔5〕序列化:对象保存和恢复过程称为序列化〔+2〕。
即对象具有保存和加载其状态能力〔+1〕,对象能够在程序运行完毕前将对象当前状态写入永久存储体中,以后在程序运行时通过数据读取而恢复对象状态〔+2〕。
二、简答题〔每题10分,共计40分〕1.简述文档、视图和应用程序框架之间如何相互作用?答:文档、视图和应用程序包含了一系列复杂相互作用过程〔+1〕,稳当和视图交互式通过类共有数据成员和成员函数实现〔+1〕。
一个视图对象只与一个文档对象关联,一个文档可以与多个视图关联,但一个文档对象只反映当前视图变化〔+2〕。
视图中用GetDocument()获取文档对象进展操作〔+1〕;在文档中利用Invalidate(), UpdateAllViews()或SendMessage(WM_PAINT,a,b)调用视图中OnDraw()对文档数据进展绘图〔+3〕;在程序任何地方可以调用AfxGetApp()得到程序框架对象指针,利用框架对象指针可进一步利用GetActiveView()获取程序视图对象,并对其进展操作〔+2〕。
VC-MFC试题复习题及答案
《VC程序设计》试卷1一、单项选择题(每题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为〔 B 〕A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为〔 B 〕A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的〔 B 〕A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的选项是〔A 〕A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、以下语句的运行结果为〔 D 〕#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是〔 A 〕A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,假设对函数未加说明,则函数的隐含类型是〔 A 〕A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、以下说法中正确的选项是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的选项是〔 D 〕A、在Windows中只有一个消息系统,即系统消息队列。
vc 复习题答案
一、名词1.面向对象技术:全称Oriented Object Technology, 是以对象为单位描述客观世界的一种新技术,其领域包括OO-PL(程序设计语言)、OO-DB。
2.对象:object,是对现实世界任何实体的抽象描述,包含数据以及对数据的操作。
3.类与类库:类(class)是对一组性质相近的客观对象的抽象归纳,它将对象的共性集中起来,形成一个集合。
类库:类(class)——是一种C++数据类型,它能够提供访问某个“类对象”的接口,这个“类对象”由一个名字来标识。
一个类定义包括类的变量和方法,以及实例的变量和方法,它还包含着它的父类的所有变量和方法。
类库(class library)——支持相同应用程序的相关C++类的集合。
对象(object)——是“类”的实例,它对能够修改类状态的属性(数据)和行为(函数)都作了具体实现。
4.MFC:微软基础类(Microsoft Foundation Classes),类库是一些类的集合,其中封装了大量的有用的函数和数据结构,一个成熟的软件开发工具都有一个功能庞大的类库与他匹配,与Visual C++捆绑在一起的是微软基础类MFC。
5.匈牙利命名法:是匈牙利人查尔斯·西蒙尼提出的。
有两条规则:标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。
在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。
如,nCount为一整型变量,bFlag为一Boolean型变量。
基类(base class)——指C++中的一些抽象的、基础性的“大”类,其它类能够通过继承关系由它派生。
派生类(derived class)——由一个基类派生出来的类,它由基类创建,并且继承了该基类的所有特性。
6.类的继承性与派生性:类的派生类:在已有类的基础上定义一个新类,新定义的类称为原有类的派生类或子类,原有的类称为新定义的类的基类或父类,派生类继承了基类所有的属性和行为。
mfc面试题
mfc面试题MFC(Microsoft Foundation Classes)是微软公司开发的一套C++类库,用于进行Windows应用程序的开发。
MFC面试题主要涉及MFC框架的基本概念、使用方法和相关编程技巧。
以下将以问题和答案的形式介绍几个常见的MFC面试题。
问题1:MFC是什么?它的作用是什么?答:MFC全称为Microsoft Foundation Classes,是微软在VisualC++中提供的一组类库。
它的作用是封装了Windows操作系统的API,简化了Windows应用程序的开发过程。
通过使用MFC,开发人员可以更加方便地创建图形界面、响应用户操作和调用系统功能。
问题2:MFC的架构是怎样的?答:MFC的架构可以分为三层:应用程序层、框架层和操作系统层。
应用程序层是开发人员编写的具体应用程序代码,包括窗口类、对话框类、消息处理函数等。
框架层是MFC提供的类库,包括CWinApp、CFrameWnd、CView等类,用于管理应用程序的生命周期、创建主窗口、处理消息等。
操作系统层是Windows操作系统提供的API,MFC通过封装这些API,以提供更高层次的抽象和易用性。
问题3:如何创建一个MFC应用程序?答:创建MFC应用程序的步骤如下:1. 打开Visual Studio,选择创建新项目。
2. 选择Visual C++ -> MFC -> MFC应用程序。
3. 输入项目名称,选择保存位置,点击确定。
4. 在向导中选择应用程序类型(单文档、多文档、对话框等)、界面风格和其他选项。
5. 点击完成,Visual Studio将自动生成一个基本的MFC应用程序框架。
问题4:如何处理MFC中的消息?答:MFC中的消息处理通过消息映射表和消息处理函数完成。
首先,需要在类声明中使用`DECLARE_MESSAGE_MAP()`宏来声明消息映射表。
然后,在类实现中使用`BEGIN_MESSAGE_MAP`和`END_MESSAGE_MAP`宏来定义消息映射表的起止位置。
mfc期末考试试题及答案
mfc期末考试试题及答案# MFC期末考试试题及答案## 一、选择题(每题2分,共20分)1. MFC框架中,哪个类是所有窗口类的基类?A. CObjectB. CViewC. CFrameWndD. CWnd2. 在MFC中,哪个宏用于创建一个对话框资源?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. DDX_CONTROLD. DDX_TEXT3. MFC中,用于处理消息映射的宏是?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. ON_COMMANDD. ON_MESSAGE4. 下列哪个不是MFC中的控件类?A. CButtonB. CComboBoxC. CLabelD. CListBox5. 在MFC中,哪个函数用于绘制窗口的非客户区?A. OnDraw()B. OnEraseBkgnd()C. OnPaint()D. OnNcPaint()6. MFC中,哪个类提供了对数据库的访问?A. CDatabaseB. CRecordsetC. CRecordViewD. CDaoDatabase7. 以下哪个不是MFC中的文档模板?A. CMultiDocTemplateB. CSingleDocTemplateC. CDialogTemplateD. CDocTemplate8. MFC中,哪个类负责管理窗口的生命周期?A. CWinAppB. CDocumentC. CViewD. CFrameWnd9. 在MFC中,哪个宏用于定义消息映射?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. END_MESSAGE_MAPD. IMPLEMENT_MESSAGE_MAP10. MFC中,哪个函数用于响应鼠标点击事件?A. OnLButtonDown()B. OnLButtonUp()C. OnRButtonDown()D. OnMButtonDown()## 二、简答题(每题10分,共30分)1. 简述MFC中CWinApp类的用途和主要功能。
VC-MFC试题复习题及答案
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为( B )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为( D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是( A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B )A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是( D )A、在Windows中只有一个消息系统,即系统消息队列。
MFC考试复习题0
复习题::局部全局变量的重名问题。
即在局部变量的作用域内,可用“::”对被隐藏的同名全局变量进行访问。
内联函数:消除函数调用时的系统开销,以提高运行速度,合一些小函数,用空间换时间适。
int i和int& ri = i:表示变量ri引用了变量i,这时ri就可看作是i的别名,即它们指向同一个内存单元。
派生类对基类成员的继承关系:基类成员作为派生类成员公有派生私有派生private成员不可直接访问成员不可直接访问成员protected成员protected成员private成员public成员public成员private成员联编的概念与作用:编译时的多态是通过静态联编来实现的。
所谓联编(binding。
亦称束定),就是把函数名与其函数体的程序代码连接(联系)在一起。
静态联编时,系统用实参与形参进行匹配,对于同名的重载函数便根据参数上的差异进行区分,然后进行联编。
从而实现了多态性。
运行时的多态是用动态联编实现的。
动态联编(也称晚联编)是程序运行时才进行的联编。
即当程序调用到某一函数(过程)名时,才去寻找和连接其程序代码,对面向对象程序而言,就是当对象接收到某一消息时,才去寻找和连接相应的方法。
6、可视化开发系统往往集成了一系列系统可用资源和开发工具,主要是指哪些?程序调试工具,包括源程序语法检查、可执行程序修改和运行监视等;可选择并构成具体语句或源程序结构的例程库及Help;资源管理器,包括图形化窗口及组成元素的多种对象的编辑器;应用程序Help和Setup开发工具包;源程序编辑器和编译器;系统函数库和系统函数开发工具。
窗口管理函数实现窗口的创建、移动和修改功能;系统服务函数:实现与操作系统有关的多种功能;图形设备(GDI)函数:实现与设备无关的图形操作功能。
API为应用程序提供Win系统各种特殊函数及数据结构定义;API是Win系统与Win应用程序间的标准程序接口;Win应用程序可以利用上千个标准API函数调用系统功能。
VC_复习题+答案
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为(B)A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为(B)A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的(B)A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A)A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为(D)#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的造缺省构函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是(A)A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中D、在类体之外定义的函数成员不能操作该类的私有数据成员10、以下不属于成员函数的是( B)A、静态成员函数B、友元函数C、构造函数D、析构函数11、对于消息队列的描述正确的是(D)A、在Windows中只有一个消息系统,即系统消息队列。
VC++ MFC 应用程序基础试题与答案 附解题步骤
按键显示左边找到这里啊的位置新建一个选项名字随意然后会出来子菜单右键属性名儿XXX ID 得对应ID_XXX类向导上边第三个里第一个Class name 选中viewobject ID 选中刚才建立的ID_XXXmessage里选第一个双击或者点一下View类里会出现相应函数找到代码照着敲55,55,是文字显示的坐标引号内是输出的内容,都能改右键显示当前鼠标位置类向导上边第三个里第一个Class name object ID 都选中viewMessage 里选WM_RBUTTONDOWN双击或者点一下View类里会出现相应函数找到代码照着敲屏幕上响应键盘输入添加变量右键Doc 类第三个照着敲类向导上边第三个里第一个Class name object ID 都选中view Message 里选WM_CHAR双击或者点一下View类里会出现相应函数找到代码照着敲CDdDoc* pDoc = GetDocument();这行可以到OnDraw函数里找到然后OnDraw函数中加一行pDC->TextOut(11,11,pDoc->str);View类中读取Doc类里存储的数据右键第三个Str改啥都行Doc类构造函数中给str初始化双击打开引号里面随便打View类中ondraw函数中添加代码添加pDC->TextOut(11,11,pDoc->str); 数字是文字显示的左边随便写多文件结构选图标框中是白的那个第一个中多了三个文件夹第一个存cpp文件第二个存.h头文件建立CPP文件会存在第一个文件夹中建立CPP文件会存在第二个文件夹中效果头文件中敲函数的声明,CPP中敲函数的实现建立一个main名字的cpp文件存主函数根据考题来~这东西防止被重复编译写在一个头文件里就OK。
vc复习题终结版,考试以此为标准
一、选择题2、VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,表示按钮控制消息(A)A、BMB、CBC、DMD、EM3、Windows应用程序常用消息,产生单击鼠标左键的消息是(A)A WM_LBUTTONDOWNB WM_RBUTTONUPC WM_RBUTTONDBLCLKD WM_LBUTTONUP4、Windows应用程序常用消息,按下一个非系统键时产生的消息是(B)A WM_RBUTTONUPB WM_KEYDOWNC WM_KEYUPD WM_POPDOWN5、按下一个非系统键时产生的消息WM_ CHAR,存按键的ASCII码信息的是(C)A、1ParamB、WordParamC、wParam D 、ongParam6、关闭窗口时产生的消息(D)A、WM_KEYDOWNB、WM_CREATC、WM_DESTROYD、WM_CLOSE7、由CreateWindow函数发出的消息(B)A、WM_KEYDOWNB、WM_CREATC、WM_DESTROYD、WM_CLOSE由PostQuitMessage函数发出的消息(A)A、WM_QUITB、WM_CREATC、WM_DESTROYD、WM_CLOSE12、在VC中调用函数(A)可以创建自定义字体A、GreateFontB、GreateWFontC、GreateWFontsD、GreateFonts13、输出文本之前要获取字体的信息,如字符高度等,以确定输出格式和下一行字符的位置,获取当前使用字体信息函数(C)A、GetFontMetricsB、GetFontMetricC、GetTextMetricsD、GetTextMetric14、文本输出函数TextOut(HDC hdc, int X, int Y,LPCTSTR lpstring, int nCount )第四个参数nCount记录的是AA、lpstring中的字符串的字节数B、字符串的长度C、lpstring的长度D、lpstring串的循环次数15、虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的( A )参数中A、wParam C、VKB、Param D、VB16、Alt键与相关输入键的组合产生的消息是( A )A、系统按键消息B、非系统按键消息C、空消息D、组合消息17、不使用Alt键组合的的按键消息是( B )A、系统按键消息B、非系统按键消息C、空消息D、组合消息18、一个按键的组合产生了一个可以显示的字符时,就产生了一个( A )A、字符消息B、按键消息C、组合消息D、空消息19、按键消息的变量lParam是( C )变量A 、8位 B、16位 C、32位 D、84位20、在Windows操作系统中预定义了几种光标,IDC-ARROW表示:CA、十字光标B、计时光标C、箭头光标D、I光标21、在Windows操作系统中预定义了几种光标,IDC-SIZEALL表示:CA、十字光标B、计时光标C、十字箭头光标D、I光标22、自定义光标保存在扩展名为( B )的文件中A、txtB、curC、 cuvD、 cui23、鼠标消息中lParam包含的是(B)A、鼠标的键值B、鼠标位置C、虚键状态D、字符码24、POPUP语句定义的是(C)A、主菜单条B、下拉式菜单C、弹出式菜单D、菜单项25、资源描述文件中ACCELERATORS定义的是:DA、菜单B、弹出式菜单C、组合键D、加速键资源26、定义位图的数据结构是(D)A、BITMAPB、CBITMAPC、JPGD、HBITMAP27、资源描述文件中DIALOG定义的是:CA、菜单B、弹出式菜单C、对话框资源D、加速键资源28、图标资源的文件扩展名为.A、curB、cuvC、icoD、icc29、MFC库中的类中根类为DA、CWndB、CMDC、InternetD、CObject30、在MFC中以(C)为前缀的函数(数据库类函数和DDX函数除外)和变量,在目前的版本中,都表示全局函数或全局变量A、AFXB、CDC、AfxD、MFC31、Afx为前缀的函数(数据库类函数和DDX函数除外)和变量中,表示无条件终止一个应用程序的是( A )A、AfxAbortB、AfxBeginThreadC、AfxFormatStringD、AfxMessageBox32、Afx为前缀的函数(数据库类函数和DDX函数除外)和变量中,表示显示一个Windows消息框是( D)A、AfxAbortB、AfxBeginThreadC、AfxFormatStringD、AfxMessageBox33、在MFC中表示窗口类的是(D)A、CDialog类B、CMenu类C、CView类D、CWnd类二、填空题1.vc++6.0工程文件的扩展名是________.dsp_______________。
mfc期末考试试题及答案
mfc期末考试试题及答案MFC期末考试试题一、选择题(每题2分,共20分)1. MFC中的“M”代表什么?A. MicrosoftB. ModelC. MessageD. Module2. 在MFC中,哪个类是所有窗口类的基类?A. CWinAppB. CWndC. CFrameWndD. CDocument3. MFC中的消息映射机制是如何工作的?A. 直接调用函数B. 通过消息队列C. 通过函数指针D. 通过反射4. 下列哪个不是MFC中常用的消息类型?A. WM_PAINTB. WM_COMMANDC. WM_TIMERD. WM_USER5. MFC中,哪个宏用于创建对话框类?A. DECLARE_MESSAGE_MAPB. BEGIN_MESSAGE_MAPC. DDX/DDVD. DLGTEMPLATE6. 在MFC中,如何将控件与变量关联起来?A. 使用控件IDB. 使用变量名C. 使用控件的类名D. 使用消息映射7. MFC中,哪个类提供了对文件操作的支持?A. CFileB. CStdioFileC. CArchiveD. CFileFind8. 在MFC中,如何创建一个单文档界面(SDI)应用程序?A. 使用CWinApp类B. 使用CFrameWnd类C. 使用CSingleDocTemplate类D. 使用CMultiDocTemplate类9. MFC中,哪个类用于管理应用程序的运行时状态?A. CWinThreadB. CWinAppC. CMainFrameD. CView10. 下列哪个不是MFC中的消息处理函数?A. OnCreateB. OnDestroyC. OnInitDialogD. OnClose二、简答题(每题5分,共20分)1. 简述MFC框架中的消息循环机制。
2. 解释MFC中的资源文件(.rc)和资源编辑器的作用。
3. 描述如何使用MFC创建一个基本的对话框应用程序。
MFC的复习资料有试题包括答案
1-1 什么是Windows SDK程序?答:使用软件开发工具包开发出来的Windows应用程序叫做Windows SDK程序。
1-3 打开windows.h文件,看一下Windows系统的句柄是什么数据类型的?答:整型。
1-5 什么是事件?答:能触发程序做出相应反应的因素或动作叫做“事件”。
1-6 如何显示和更新窗口?答:调用函数ShowWindow显示窗口,调用函数UpdateWindows更新窗口。
1-7 什么是消息循环?答:在创建了窗口的应用程序中,应用程序将不断地从消息队列中获取消息,并将消息指派给指定的窗口处理函数来处理,然后再回来从消息队列获取消息,这个不断重复的工作过程叫做消息循环。
1-9 说明Windows应用程序的主函数、窗口函数与Windows系统之间的关系。
答:Windows应用程序的主函数和窗口函数都是系统调用的函数,主函数是在应用程序启动时由系统首先调用的函数,而窗口函数是主函数在消息循环中获得消息并把消息派送给系统之后,由系统调用的用来处理消息的函数。
2-1 在窗体类CframeWnd中需要封装哪些成员?答:在窗体类CframeWnd中要封装窗口句柄、窗口类的定义、注册窗口类、创建窗口、显示更新窗口。
2-2 应用程序类CwinApp应该具备那些主要功能?答:创建、显示应用程序的窗口和建立消息循环。
2-3 在MFC程序设计中,如果要建立拥有自己风格的主窗口,应该重写什么函数。
答:继承CWinAPP类并需要重写该类的成员函数InitInstaance。
3-3 简述构成文档/视图结构应用程序框架的四个MFC派生类,并说出它们的功能。
答:假如工程名称为MyPrj则MFC AppWizard会自动创建一下四个派生类来构成应用程序的框架。
.CFrame类的派生类CMainFrame;.CWinApp类的派生类CMyPrjApp;.CDocument类的派生类CMyPrjDoc;.CView类的派生类CMyPrjView。
最新MFC纯复习题04资料
实用软件技术复习题1 在用API编写Windows程序时,要有一个入口函数,它的函数名和功能是什么?答:在Windows编程中这个入口函数就是WinMain()。
WinMain函数主要用于初始化程序,显示主窗口,并进入一个消息循环。
2 在Windows程序的入口函数WinMain()中有一个消息循环,代码如下:while (GetMessage(&msg)){TranslateMessage(&msg);DispatchMessage(&msg);}上述代码中个函数作用是什么?答:通过GetMessage函数从线程的消息队列中取出消息,用TranslateMessage函数将消息解释后,再调用DispatchMessage将该消息分发至相应的窗口过程(WndProc)进行处理。
3 Windows程序中有一个窗口函数,该函数的作用是什么?答:每一个窗口都应该有一个“窗口函数”(window procedure,或称window function)。
如果窗口获得一个消息,则这个窗口函数必须判断消息的类别,决定处理的方式。
4 在Windows系统中分别定义了两个数据类型用来表示应用程序对象的句柄及窗口对象的句柄,这两个数据类型是什么?答:应用程序:数据类型HINSTANCE,也常把HINSTANCE的变量命名为hInstance,窗口:数据类型为HWND(也写成HWindow或HWND)。
5 利用AppWizard生成的多文档应用程序包括哪几个主要的类?答:主要是CWinApp, CDocument, CView, CFrameWnd派生,另外再加上CDocTemplate, 这5个类构成了大部分MFC应用程序的核心,6 MFC类库可分为哪两部分?答:MFC类库可以分为两部分,一部分是MFC类,另一部分是全局函数(变量)和宏。
7 MFC中下列类的类名分别是什么?应用程序类(CWinApp)、视图类(CView)、文档类(CDocument)、窗口类(CWnd)、主框架窗口类(CFrameWnd)、文档模板类(CDocTemplate)、对话框类(CDialog)、异常类(CException)、字符串类(CString)、菜单类(CMenu)、工具栏类(CToolBar)、状态栏类(CStatusBar)、静态控件类(CStatic)、按钮控件类(CButton)、编辑控件类(CEdit)、列表框控件类(CCListBox)、组合框控件类(CComboBox)、滚动条控件类(CScrollBar)。
vc考试题和答案
vc考试题和答案**VC考试题和答案**一、单项选择题(每题2分,共20分)1. 在Visual C++中,以下哪个函数用于创建一个新窗口?A. CreateWindowB. CreateDialogC. MessageBoxD. DialogBox答案:A2. MFC中的CView类的主要作用是什么?A. 处理窗口消息B. 管理文档数据C. 显示文档内容D. 控制应用程序的运行答案:C3. 在C++中,以下哪个关键字用于定义类的成员函数?A. staticB. virtualC. friendD. inline答案:B4. Visual C++中,以下哪个宏用于获取当前类的名称?A. _TB. __FILE__C. __LINE__D. __FUNCTION__答案:D5. 在MFC中,以下哪个类是所有文档类和视图类的基类?A. CObjectB. CCmdTargetC. CDocumentD. CWnd答案:A6. 在C++中,以下哪个关键字用于声明一个纯虚函数?A. abstractB. virtualC. pureD. override答案:C7. 在Visual C++中,以下哪个函数用于绘制文本?A. DrawTextB. TextOutC. MessageBoxD. DrawIcon答案:A8. MFC中的CDocument类的主要作用是什么?A. 管理窗口B. 管理视图C. 管理文档数据D. 控制应用程序的运行答案:C9. 在C++中,以下哪个关键字用于声明一个静态成员函数?A. staticB. virtualC. friend答案:A10. 在Visual C++中,以下哪个函数用于获取窗口的客户区大小?A. GetWindowRectB. GetClientRectC. GetWindowTextD. GetWindowPlacement答案:B二、多项选择题(每题3分,共15分)1. 在Visual C++中,以下哪些类是MFC框架的一部分?A. CObjectB. CWndC. CFile答案:A, B, C, D2. 在C++中,以下哪些关键字用于类的继承?A. publicB. protectedC. privateD. friend答案:A, B, C3. 在Visual C++中,以下哪些函数用于处理消息?A. OnCreateB. OnPaintC. OnCommandD. OnInitDialog答案:A, B, C4. 在MFC中,以下哪些类是用于管理资源的?A. CBitmapB. CMenuC. CBrushD. CFont答案:A, B, C, D5. 在C++中,以下哪些关键字用于函数重载?A. virtualB. staticC. constD. inline答案:A, C三、填空题(每题3分,共15分)1. 在Visual C++中,______宏用于将字符串常量转换为Unicode格式。
MFC期末复习简答题及答案
MFC 期末复习及答案1 简述MFC 应用程序的执行过程。
2 简述文档/视图与其他类对象的关系。
3 简述MFC 消息映射机制。
4 消息WM_LBUTTONDOWN 的消息映射宏和消息处理函数是什么?5 如何自定义消息?如何发送自定义消息?6 GDI 创建哪几种类型的图形输出?7 什么是设备环境?它的主要功能有哪些?8 什么是GDI,它有什么功能?MFC 将GDI 函数封装在哪个类中?9 请叙述设备无关性的含义,实现设备无关性需要哪几个环节?10 MFC 提供了哪几种设备环境类?它们各自有什么用途?11 简述传统的SDK 获取设备环境的方法。
12 简述创建和使用自定义画笔的步骤。
13 简述采用MFC 方法编程时,显示一个DDB 位图的步骤。
14 简述菜单设计的主要步骤。
15 为应用程序创建快捷菜单主要有哪些方法?16 如何动态创建菜单?17 创建工具栏的基本步骤有哪些?18 简述MFC 创建状态栏所做的工作。
19 简述创建和使用模态对话框的主要步骤。
20 如何向对话框模板资源添加控件?如何添加与控件关联的成员变量?21 什么是DDX 和DDV?编程时如何使用MFC 提供的DDX 功能?22 简述创建属性页对话框的主要步骤。
23 在应用程序中访问控件的方法有哪些?24 单选按钮控件如何成组?25 组合框与列表框相比有什么不同?如何给组合框添加初始的列表项?26 通过哪几个主要成员函数完成文档与视图之间的相互作用?并简述这些成员函数的功能。
27 简述文档序列化与一般文件处理的区别。
28.如何让用户定义的类支持序列化?1 简述MFC 应用程序的执行过程。
MFC 应用程序启动时,首先创建应用程序对象theApp。
这时将自动调用应用程序类的构造函数初始化对象theApp,然后由应用程序框架调用MFC 提供的WinMain( )主函数。
在WinMain( )主函数中,首先通过调用全局函数GetApp( )来获取theApp 的指针pApp,然后通过该指针调用theApp 的成员函数InitInstance( )来初始化应用程序。
MFC复习题
名词解释1.事件:能触发程序做出相应反应的因素或动作叫做“事件”2、句柄:用来区分普通变量的标识的标识叫做句柄3、消息:为了描述事件的各种信息而定义的一个结叫做消息4、Windows的API函数:由操作系统提供的,用户可以使用的函数叫做API函数5、Windows SDK程序:直接使用API函数开发程序的早期Windows应用程序的开发工具6、资源:用不同方式制作和保存的数据叫做资源7、图象设备接口(GDI):用于改变DC属性的操作,即与绘图相关的操作制作成的函数的集合。
8、控件CDC类:把DC和GDI函数封装到一起形成的类叫做控件CDC类9、消息循环:在创建了窗口的应用程序中,应用程序将不断地从消息队列中获取消息,并将消息指派给指定的窗口处理函数来处理,然后再回来从消息队列获取消息,这个不断重复的工作过程叫做消息循环。
10、无效显示区:无效显示区一般定义为窗口用户区上的一个矩形区域,这个区域应覆盖所有因文档发生变化而需要重绘的部分。
当程序需要重新绘制一个图形时,只要重新绘制该矩形内部的图形就可以了。
11、控件:为了实现应用程序与用户之间的交互,Windows允许在应用程序的界面上放置诸如命令按钮、文本框、滚动条等一些图形部件,因为这些部件可以用来处理用户事件,并使应用做出相应的反应,所以这些图形部件通常叫做控件。
12、类信息表:类中存放了类信息的一个CruntimeClass结构类型数据。
其中的主要内容为类名称和指向对象构建函数的指针,建立该表的目的就是为了能在运行期根据类名称调用构建函数来动态创建对象。
简答题1.位图的主要步骤:1)用位图类来定义一个对象(Bitmap)2)把位图资源载入位图对象3)获取位图信息4)把位图选入内存设备环境5)显示位图2.利用AppWizard生成默认的SDI应用程序My时,向导自动生成的哪四个类?及其相应的功能。
CMainFrame(构建应用程序,显示窗架)CMyApp(整个应用程序)CMyDoc(管理数据)CMyView(显示数据)3.创建窗口的五个步骤:1)定义窗口2)注册窗口3)创建窗口4)显示窗口5)消息循环4.简述从Cdocument类派生自己需要的文档类的一般步骤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《VC程序设计》试卷1一、单项选择题(每小题1分,共20分)1、假定MyClass为一个类,则执行“”MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为( B )A、2B、3C、4D、52、对于类中定义的成员,其隐含访问权限为( B )A、protectedB、privateC、publicD、static3、一个类的友元函数或友元类能够通过成员操作符访问该类的( B )A、私有成员B、所有成员C、公用成员D、保护成员4、下面说法正确的是(A )A、构造函数可以重载,析构函数不能重载。
B、构造函数不能重载,析构函数可以重载。
C、构造函数可以重载,析构函数也可以重载。
D、构造函数和析构函数都不可以重载。
5、下列语句的运行结果为( D )#include <iostream.h>srtuct COMPLEX{int x;int y;} cNum[2]={1,3,2,7};void main(){cout<< cNum[0].y*cNum[1] x<<endl;}A、3B、2C、21D、66、类AB的缺省构造函数和析构函数是( A )A、AB( )和~AB( )B、AB(int)和~AB( )C、AB( )和~AB(delete )D、AB( )和int~AB( )7、在C++中,若对函数未加说明,则函数的隐含类型是( A )A、intB、doubleC、voidD、char8、已知类A是类B的友元,类B是类C的友元,则( D )A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、下列说法中正确的是( B )A、类定义中只能说明函数成员的函数头,不能定义函数体B、类中的函数成员可以在类体中定义,也可以在类体之外定义C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中、在类体之外定义的函数成员不能操作该类的私有数据成员 D( B )10、以下不属于成员函数的是、友元函数A、静态成员函数 B、析构函数 D 、构造函数C.D )11、对于消息队列的描述正确的是(消息队列是一个系统中只有一个消息系统,即系统消息队列。
A、在Windows定义的数据结构,用于临时存储消息。
下运行另外,每个正在WindowsB、系统可从消息队列将信息直接发给窗口。
的应用程序都有自己的消息队列。
模块传送到应用程序的消息、系统消息队列中的每个消息最终都要被USERC队列中去。
应用程序的消息对列中存储了程序的所有窗口的全部消息。
D、以上都正确)视)文档对象,一个文档对象能连接(12、一个视图对象能连接( A图对象。
B、多个,一个A、一个,多个D、多个,多个C、一个,一个) B 类库中的类按层次关系可知,CStatic 的直接父类为( MFC13、CFrameWnd 、 D C、CcmdTarget A、CObject B、CWnd键顺序来为控件分组。
C )属性和Tab14、可以利用控件的(Caption 、DC、Group B、Tab stop A、ID)B 、根据对话框的行为性质,对话框可以分为两类:(15 、模式对话框和非模式对话框B、对话框资源和对话框类 A 、消息对话框和模式对话框DC、对话框资源和对话框模板属性。
)没有Caption C 、以下控件中,16(D 、静态控件、编辑控件B、群组框 C A、按钮)引导。
、菜单项助记符前用( B 17$ D、B、& C、# A、%)。
C 18、更新菜单状态的消息是(UPDATE、 B A、WM_COMMANDALIDATEINV D、C、ON_UPDATE_COMMAND_UI。
)19、关于工具栏、菜单和加速键的关系,正确的说法是(C、工具按钮与加速键一一对应BA、工具按钮与菜单必须一一对应、菜单与加速键一一对应D、工具按钮不必与菜单一一对应C获取的设备上下文在退出时,必须调用GetDC( )和20、使用GetWindowDC( ) A )释放设备上下文。
(Detach( ) 、D C、DeleteDC( ) A、ReleaseDC( ) B、delete( ))分1分,共25二、填空题(每空long 个字节,占____2___int开发环境中,型数据占4个字节,short int1、VC++ 个字节。
占_____4____int,并且在循环体中不会修)”;i<10;i++for2、若循环的“头”为“for(int i=1次后结束。
_______9_____改i的值,则循环体将被重复执行3、两个函数的函数名____相同____,但参数的个数或对应参数的类型___不同____时,则称为重载函数。
4、若ch为char型变量,n为int型变量,则下列语句ch = 'a'; n = 3; ch = ch + n;cout<<”ch = ”<< ch;执行的结果是___ch=d_______。
传递。
__引用___另一种是地址传递或中函数的参数传递一种是按值传递,C++、5.6、C++运行时的多态性通过____虚函数____来实现,而编译时的多态性通过__函数重载___来实现。
7 只读成员函数用____const____关键字标识,内联成员函数用___inline____关键字标识。
8、class test{public:static int x;};test t1,t2; t1.x = 25;程序运行到这里时,t2.x的值为_____25_______。
9、所有的文档类都派生于______CDocument__ _______,所有的视图类都派生于:______ CView _______。
10、为解决多继承中因公共基类而产生的二义性问题,C++语言提供了_虚基类___机制。
将公共基类声明为它以后,它在派生类中只产生一个实例。
11、在代码中,使用CWnd::____UpdateData________函数可实现控件与其成员变量之间的数据的传输。
12、列表框ClistBox类的成员函数______AddString________用来向列表框增加列表项,成员函数_____ResetContent_______用来清除列表项所有项目。
13、:________序列化_________ 是指将对象写入永久存储介质或者将对象从永久存储介质中读出的过程。
14、Windows程序中的消息有窗口消息、命令消息和__控件通知__消息三种类型。
15、MFC中的集合类包括数组、列表(链表)、映射(顺序可变)。
16、在进行绘图时,画刷用于指定图形的填充样式,___画笔______用于指定图形的边框样式。
三选择填空题(每空1分,共15分)1、如果在基类和派生类中都包含其他类的对象(即有对象成员),则在创建派生类的对象时,首先执行⑴A的构造函数,接着执行⑵C 的构造函数,然后执行__ _⑶_B__的构造函数,最后才执行⑷ D 的构造函数。
A、基类的对象成员B、派生类的对象成员C、基类D、派生类2、[5] B 代表窗口客户区的显示设备上下文, [6]C 代表整个窗口的显示设备上下文。
A、CPaintDCB、CClientDCC、CWindowDCD、CMetaFileDC3、消息循环的处理过程如下:⑺ A 函数不断侦察应用程序的消息队列,若队列为空,该函数一直运行,不返回;一旦发现队列不为空,便取出一条消息,把它拷贝到msg结构变量中,同时该函数返回TRUE;得到消息msg后,⑻ B 把来自键盘的命令翻译成WM_XXX消息命令形式。
⑼ E 函数通知Windows把每个消息分发给相应的窗口函数。
应用程序并不直接调用窗口函数,而由Windows根据消息去调用窗口函数,因此,窗口函数经常被称为回调函数。
A、GetMessage( )B、translateMessage( )C、PostMessage( )D、SendMessage( )E、DispatchMessage( )4、常用的CButton类的成员函数中:⑽ A 获得一个按钮控件的选中、选择和聚焦状态;⑾ D 得到一个按钮的选中状态;⑿ C 设置一个按钮的选中状态。
A、GetState( )B、SetState( )C、SetCheck( )D、GetCheck( )E、GetButtonStyle( )5、滚动条类CScrollBar的成员函数规定了滚动条的操作。
设置滚动条的范围使用⒀ C 函数,设置滚动块的位置使用⒁E 函数,获取滚动块的当前位置使用⒂F 函数。
A、SetPosB、SetRangeC、SetScrollRangeD、GetPosE、SetScrollPosF、GetScrollPosG、GetScrollRange四写出下列程序的运行结果(每小题5分,共15分)1、.#include<iostream.h>class A{int *a;public:A(int x){ a=new int(x); cout<<*a=<<*a<<endl; delete a; }};void main(){A x(3), *p;p=new A (5);delete p;}*a=3*a=5class test{2、private:int num;public:test();int GetNum() { return num;}test(); ~;}test::test(){ num=0; }test()~test::<<endl; } ″Destructor is active″{ cout<<void main();{ test x[3]<<endl; ″cout<<″Exiting main}Exiting mainDestructor is activeDestructor is activeDestructor is active#include<iostream.h>、3.class A {public:virtual void fun(){ cout<<I'm class A<<endl; }};class B: public A{public:void fun(){ cout<<I'm class B<<endl; }};class C: public B{public:void fun(){ cout<<I'm class C<<endl; }};void main(){A a,*pA=&a;pA->fun();B b;pA=&b;pA->fun();C c;a=c;a.fun();A &aRef=c;aRef.fun();}I'm class AI'm class BI'm class AI'm class C五、完成程序题(本大题共3小题,每空2分,共12分)。