《MFC程序设计》试题A.doc
《《MFC程序设计》试题A.doc》由会员分享,可在线阅读,更多相关《《MFC程序设计》试题A.doc(7页珍藏版)》请在冰豆网上搜索。
《MFC程序设计》期末考试试题(A卷)
年级:
_04_班级:
_应用、通信、信息、嵌入式专业:
软件工程
考试形式:
闭卷任课教师:
李才伟
班级:
__________学号:
________________姓名:
___________成绩:
_______
一.填空题(每小题2分,共30分)
1.SDK的英文全文为_____________________________________________,中文译文是_____________________。
2.Windows编程的特点有_______________________________________________________________________________________________________________________________。
3.Windows编程中的首选语言工具:
系统应用程序的为______________________,.NET框架程序的为_________________________。
4.GDI的英文全文为_____________________________________________,中文译文是_____________________。
5.对话框的种类有________________________________________________________________________________________________。
6.CGDIObject的常用派生类有__________________________________________________________________________。
7.视图类的OnDraw函数在________________________________________________________________________________________________________时会被应用程序框架调用。
8.缺省的映射模式是__________________________,对应的单位为_________________。
9.用MFC生成位图动画的步骤为_________________________________________________________________________________________________________________________。
10.在打开文档并就绪后,应用程序框架先后调用的视图类函数为_____________________和______________________。
11.与GDI相比,GDI+的画刷主要增加了________________________________________。
12.GDI+矩形类Rect的数据成员有______________________________________________。
13.在泛型编程中,迭代器是广义的____________、容器则是广义的__________________。
14.VC中可用的主要字符串类有_______________________________________________。
15.COM的英文全文为_____________________________________________,中文译文是________________________。
二.问答题(每小题5分,共30分)
1.给出MFC的英文全文与中文译文,MFC相对于WindowsAPI有哪些特点与优势?
2.菜单设计的一般步骤有哪些?
3.以鼠标消息WM_LBUTTONUP为例,写出为视图类CDrawView手工添加消息响应函数的步骤与相关代码。
4.给出用鼠标拖放画动态图形的原理思路与具体步骤。
5.文档与视图分别对应于什么?
文档/视图结构有哪几种主要的方式?
文档/视图结构涉及哪些MFC类?
它们是怎样联系在一起的?
6.在使用GDI+编写绘图代码之前,需要做哪些预先的准备工作?
三.编程题(每小题10分,共40分)
1.写出最简单的MFC程序SHello的完整源代码。
2.设有一实心绿色椭圆,其外接矩形的左上角坐标为(10,20)、宽200、高100,椭圆边框为红色单像素实线,写出画该椭圆的代码段。
(MFC或GDI+皆可)
3.写出使用“打开文件”公用对话框的代码段。
要求:
对文件扩展名bmp、gif和jpg进行过滤;如果用户按“确定”钮结束对话框,则将用户选择的文件路径串赋值给CString变量fn。
4.从下列两题中,选做一题:
1)编写移动图像程序:
写出装入当前目录的背景图文件“tulips.bmp”,并在客户区的不同位置点上(如p0、p),缓冲绘制(具有红色背景的足球)位图资源IDB_FOOTBALL_RED的有关MFC代码片段。
2)利用map容器,编写一个读入文本文件,并对其进行单词计数,最后输出它们的计数值的完整程序。
《MFC编程》试题参考答案
一.填空题(每小题2分,共30分)
1.SoftwareDevelopmentKit、软件开发工具包
2.面向对象的编程思想、消息/事件驱动的程序结构、资源共享与数据交换、与设备无关GDI编程
3.VC(VisualC++)、C#(VisualC#)
4.GraphicalDeviceInterface、图形设备接口
5.模式对话框与无模式对话框,公用对话框与用户对话框
6.CPen、CBrush、CBitmap、CFont等
7.每次需要重绘窗口(程序启动/窗口大小改变/全部或部分窗口重现/程序员调用RedrawWindow或UpdateWindow)
8.MM_TEXT、像素
9.准备系列位图文件、加入位图资源、装入位图、设置位图控件与启动/停止按钮、编写启动/停止动画(设置/删除计时器Timer)的代码、绘制动画(响应计时器消息)、程序结束时删除位图
10.OnInitialUpdate、OnDraw
11.线性渐变刷和路径渐变刷
12.X、Y、Width、Height
13.指针、数组
14.string/wstring(C++)、CString(MFC)和String(.NET)
15.ComponentObjectModel、组件对象模型
二.问答题(每小题5分,共30分)
1.
lMFC=MicrosoftFoundationClassLibrary=微软基础类库
l封装了WindowsSDK的结构、功能、应用程序框架等内部技术,屏蔽了重复繁琐的实现细节,简化了程序员的工作
2.
l打开资源编辑器来添加菜单资源、设置菜单的助记键(&)和ID
l为菜单项添加和联接加速键
l为菜单添加事件处理函数
l在事件处理函数中添加具体处理代码
3.
l在视图类的头文件中,添加函数原型:
public:
afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);
l在视图类的代码文件头部的消息映射宏内,添加命令消息映射宏:
ON_WM_LBUTTONUP()
l在视图类的代码文件尾部,添加消息响应函数的函数体:
voidCHViewView:
:
OnLButtonUp(UINTnFlags,CPointpoint){
……
CHtmlView:
:
OnLButtonUp(nFlags,point);
}
4.
原理思路:
利用两次异或画图可以还原背景的特点,采用先异或画前图、再在原位置第二次异或化图(擦除)、然后在新位置异或画图、……,这样就可以达到动态画图效果。
具体步骤:
l在视图类中定义表示动态图形的起点和动态终点、用于画异或图的灰色笔和画普通图线笔指针、是否已画了异或图等的类变量
l在视图类的初始化函数中创建用于灰色笔和图线笔、设已画异或图为假;
l在左鼠标键按下的消息响应函数中,记录起点;
l在鼠标移动消息响应函数中,判断是否左鼠标键被按下;如果按下,再判断是否已画了异或图;如果画了,则在原来老位置再一次异或画图(擦除);然后在当前新位置异或画图;记录当前新位置为老位置;
l在左鼠标键松开的消息响应函数中,在原来老位置再一次异或画图(擦除);然后在当前新位置画非异或的最终图。
5.
l文档对应于用户的数据,视图是一种窗口对象,对应于框架窗口的客户区
l文档/视图结构的3种主要方式:
SDI(singledocumentinterface,单文档界面)、MDI(multipledocumentinterface,多文档界面)和MTDI(MultipleTop-levelDocumentInterface,多顶级文档界面)
l文档/视图结构所涉及MFC类有:
文档派生类、视图派生类和[派生]框架窗口类,它们由模板类(的构造函数)联系在一起。
6.
l添加链接库:
在项目属性“配置属性/链接器/输入”项的“附加依赖项”中,添加GdiPlus.lib
l包含GDI+的头文件:
#include
l加上使用GDI+命名空间的using指令:
usingnamespaceGdiplus;
l初始化/关闭:
在应用程序类的InitInstance/ExitInstance函数中,调用GDI+启动/关闭函数GdiplusStartup/GdiplusShutdown,来对GDI+进行初始化和清除工作。
三.编程题(每小题10分,共40分)
1.
//SHello.cpp
#include//MFC头文件
classCSHelloApp:
publicCWinApp{//应用程序类
virtualBOOLInitInstance();//初始化实例虚函数
};
BOOLCSHelloApp:
:
InitInstance(){//初始化应用程序实例的成员函数
CFrameWnd*pFrmWnd=newCFrameWnd();//创建框架窗口对象
pFrmWnd->Create(NULL,"Helloworld!
");//创建框架窗口
m_pMainWnd=pFrmWnd;//将该框架窗口作为应用程序的主窗口
pFrmWnd->ShowWindow(m_nCmdShow);//显示主窗口
returnTRUE;
}
CSHelloApptheApp;//唯一的CSHelloApp对象
2.
1)MFC
CDC*pDC=GetDC();
CPenpen,*pOldPen;
pen.CreatePen(PS_SOLID,0,RGB(255,0,0));
pOldPen=pDC->SelectObject(&pen);
CBrushbrush,*pOldBrush;
brush.CreateSolidBrush(RGB(0,255,0));
pOldBrush=pDC->SelectObject(&brush);
pDC->Ellipse(10,20,210,120);
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
pen.DeleteObject();